Vytvoreni procedury – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytvoreni procedury – Delphi – Fórum – Programujte.comVytvoreni procedury – Delphi – Fórum – Programujte.com

 

Remder0
Návštěvník
16. 11. 2010   #1
-
0
-

Napisu jen to dulezite, mam vice dynamicky vytvorenych oken, stim by problem nemel byt, v oknech mam button a memo predstavuju si to tak ze po kliknu na tlacitko se odesle zprava. Nic sloziteho. Takze k procedure onclick na tlacitko jsem priradil proceduru TForm1.OdeslatForm, ale potrebuju aby pro kazde tlacitko bral text z jineho mema a tady prichazi problem kdyz vytvorim proceduru

procedure TForm1.OdeslatForm(Sender: TObject); 
tak pote muzu pouzit
btnSend.onClick:=OdeslatForm;
vse funguje, ale kdyz chci procedury, jak to jen rict nejak odlisit, tak pouziji

procedure TForm1.OdeslatForm(CisloF:integer;Sender: TObject);


v tom pripade by teda mela byt prirazena procedura k btnsend.onclick

btnSend[Cislo].onClick:=OdeslatForm(CisloF); 


A ted se dostavame k memu problemu. Toto prirazeni nefunguje bude to nejspis Sendem ktery je uveden v procedure ale kdyz jsem u procedury
procedure TForm1.OdeslatForm(CisloF:integer;Sender: TObject);
nedeklaroval
CisloF:integer
tak jsem nemusel uvadet sendera a fungovalo to. Proto se ptam jaky Sender mam napsat nebo jestli je to cele spatne napsane. Snazil jsem se abych to napsal strucne, ale jestli jsem vynechal neco duleziteho napiste.



Zhruba takhle to mam napsane, avsak s chybou kterou jsem popsal vyse.
 var btnSend:array of TButton;

memoWri:array of TMemo;
formchat:array of TForm;

procedure TForm1.OdeslatForm(CisloF:integer;Sender: TObject);
begin
ClientSocket1.Socket.SendText(memoWri[CisloF].Lines.Strings[0]);
end;

procedure Tform1.FormCreate(Cislo:integer);
begin
formChat[Cislo]:=Tform.CreateNew(Form1);
formChat[Cislo].show;
memoWri[Cislo]:=TMemo.create(self);
memoWri[Cislo].Parent:=formChat[Cislo];
btnSend[Cislo]:=TButton.Create(self);
btnSend[Cislo].parent:=formChat[Cislo];
btnSend[Cislo].onClick:=OdeslatForm(Cislo); //Error: Not enough actual parameters
end;

Nahlásit jako SPAM
IP: 109.238.35.–
zdenda
~ Anonymní uživatel
257 příspěvků
16. 11. 2010   #2
-
0
-

Odkaz na to memo, nebo jeho cislo dej do formu. Kazde instanci toho formu ho pak nastavis na odpovidajici hodnotu a pak ho primo pouzijes v te funkci. (Stejne tak ta vazba data-form v predchozim dotazu).
A nepras to nejakymi poly v hlavnim formu, ale naklikej si normalni samostatny form a vytvarej jeho instance. (Krome chatu jsi chtel delat jeste dalsi funkce a pak se ti to bude hodit jeste vic.) Vysledek bude nejak takhle.

type

TChatForm = class(TForm)
memo: TMemo;
odeslat: TButton;
procedure OdeslatData(Sender: TObject);
...
end;

procedure TChatForm.OdeslatData(Sender: TObject);
begin
...SendText(memo...);
end;
------------------------------
procedure TMainForm.NewChatForm();
var
chatform : TChatForm;
begin
chatform := TChatForm.Create(...);
...
// v tom formu mas button s onClick nastavenym na OdeslatData
// nebo to teda muzes dynamicky udelat tady
// ...
// chatform.odeslat.onClick := TChatForm.OdeslatData;
end;

Nahlásit jako SPAM
IP: 213.211.51.–
Remder0
Návštěvník
16. 11. 2010   #3
-
0
-

Dobre diky, ale haze to error kdyz chci vytvorit ten novy form stisknutim na tlacitko tak to vyhodi

Project Project1.exe raised exception class EResNotFound with message 'Resource TChatForm not found'. Process stopped. Use Step or Run to continue.

Stim ze po chvily zkouseni program uz vubec nesel spustit se stejnou hlaskou

Project Project1.exe raised exception class EResNotFound with message 'Resource TForm1 not found'. Process stopped. Use Step or Run to continue.

Cely kod:

unit Unit1;


interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure NewChatForm;
procedure Button1Click(Sender: TObject);
private

public

end;

type
TChatForm = class(TForm)
memo: TMemo;
odeslat: TButton;
end;

var
Form1: TForm1;

implementation

procedure TForm1.NewChatForm;
var chatform : TChatForm;
begin
chatform := TChatForm.Create(Form1);
chatform.Show;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
NewChatForm;
end;

end.

Nahlásit jako SPAM
IP: 109.238.35.–
zdenda
~ Anonymní uživatel
257 příspěvků
16. 11. 2010   #4
-
0
-

Ne, normálně v tom designeru vytvoř nový form. Teď máš TForm1 v unit1, ten nový bude TForm2 v unit2 a je to. Nastav mu ať se nevytváří automaticky (nevím, jestli je to někde ve vlastnostech, přinejhorším vyhoď z .dpr ten řádek, který ho vytváří), v unit1 do uses přidej unit2 a můžeš tam s ním normálně pracovat.

Nahlásit jako SPAM
IP: 213.211.51.–
Remder0
Návštěvník
16. 11. 2010   #5
-
0
-

Tak uz to mam precetl jsem nejakou literaturu a pisi ze misto create se ma pouzit createnew pri vytvareni novych formu nebo neco takovyho a stim to funguje

Nahlásit jako SPAM
IP: 109.238.35.–
zdenda
~ Anonymní uživatel
257 příspěvků
17. 11. 2010   #6
-
0
-

No, já jsem to psal jen tak z hlavy a myslím, že mi vždycky stačilo Create, ale je možné, že je potřeba/lepší ten CreateNew.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Procedury — založil Akk

Procedury a funkce — založil xy3000

Procedury a funkce — založil Tomas

Parameter procedury — založil Marek

Funkce a procedury — založil kozomelec

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý