

Delphi - button
Zdravím tu všechny.
Z delphi znam jen zaklady co do mně tlačili před par lety ve škole.
Poradte nebo mně někam nasměrujte.
Vytvořím prazdný form1 určite šiřky a 0 vyšky.
Další form 2 bude jako setup - přidej button.
Přes tento setup form bych chtěl, abych si moh přidat do form1 třeba 5 buttonu pod sebou.
V každem buttonu by bylo tohle, jen adresa jina a ukladat třeba do ini.
var
lHTTP: TIdHTTP;
s: string;
begin
lHTTP := TIdHTTP.Create(nil);
try
s := lHTTP.Get('http://192.168.15.44');
finally
lHTTP.Free;
end;
Tak jsem zkusil a asi jsem to nepochopil.
Dal jsem na form1 button a do udalosti procedure TForm1.Button1Click dal ten kod, co je v prvním postu.
Pak button s form1 smazal.
Vložil tu Vaši proceduru.
A do FormCreate dal PridejButton(Form1, 'Server 1', '192.168.15.44', 20, 50);
Spustit to jde bez chyby ale button nikde.
Pak jsi udelal nekde chybu. Koukni se na prilozenou ukazku.
Protoze nize vyplynulo, ze to nepotrebujes spoustet z druheho formulare, odstranil jsem v procedure parametr s formularem.
Trochu jsem o tom přemyšlel a na me znalosti moc složite.
Až pozdějí budu upravovat.
Takže zjednodušeně.
Jeden prazdný formulař.
Jeden textovy soubor a v něm
Zapní1
192.168.1.15
Zapní2
192.168.1.20
Zapní3
192.168.1.28
Zapni je caption pro button.
192.168.1.15 je string pro Get
V tomto připadě by se měli na form pod sebou vykreslit 3 buttony a každy by měl mit jiny caption a jinou http adresu.
Do souboru se budou přidavat další udaje, takže tlačitek bude přibyvat.
Ako fajn a v čom je problém?
Proste si načítaš adresy zo súboru a za behu vytvoríš potrebný počet tlačítok (neviem prečo práve tlačítka, dá sa to riešiť aj nejakým stringlistom, zobrazenie v ListView a pod...)
Do procedury kde budeš vytvárať tlačítak napr. môj príklad vyššie si pridaj ešte obsluhu udalosti:
Samotná obsluha stlačenia tlačítka bude vyzerať takto:
Myslím, že z toho pochopíš aj Ty o čo tam ide... uprav si podľa seba atď... Celý program Ti písať nebudem, snaž sa trošku aj sám...
No moc jsem nepochopil.
Vytvořit par tlačitek pod sebou zvladnu.
Jak však vytvořit za běhu pro každe tlačitko tu udalost onclick a v ní ten kod s 1 postu.
Pan Jan Fiala to myslel dobře a take to trochu chapu.
Vytvořím par tlačitek a každe se bude odkazovat na tu jednu proceduru onclick co tam necham.
Áno, JaFi Ti už dal hotový program, Ty už len musíš dorobiť načítanie IP adries zo súboru...
Po stlačení tlačítka sa zobrazí okno s nejakým textom (čo v tej správe asi je ?)
Ten text použiješ v kóde s 1 postu...
Ako vidím, nie je to o nepochopení, ale o logickom rozmýšľaní...
No on je problem ten, že umim vytvořit tlačitka, ale vubec nechapu jak na to, aby každe tlačitko mělo svoji proceduru Button1Click a v ní ty přikazy.
už mam textak a v něm
Zapní1,192.168.1.15
Zapní2,192.168.1.20
Zapní3,192.168.1.28
Vykresli mi to ty 3 tlačitka a přepiše Caption
Jelikož je tam
B.OnClick := Form1.Button1Click;
Všechny tlačitka dělají to co je v procedure TForm1.Button1Click
Dal s tým nemohu pohnout.
Obsluha je pre každé tlačítko tá istá... pochopiteľne... netreba robiť pre každé tlačíttko zvlášť obsluhu, stačí jedna.
V obsluhe sa predá parameter Sender:TObject = to znamená, že vieš aké tlačítko bolo stlačené.
A keďže tam bude:
No a keďže už vieš, čo presne je v titulku, môžeš s ním ďalej robiť...
čiže si môžeš uložiť titulok (caption) do premennej a túto premennú použiť ako parameter pre lHTTP.Get(tvoja_premenna);
nejak takto:
Naozaj toto sú jednoduché veci, predávanie parametrov sú úplné základy...
Chybku jsem tam mněl
premennú m:String {m := Copy(s, Pos(',', s) + 1, MaxInt);} nikde nepoužiješ - čo s stým chceš ďalej robiť?
Zrejme jsi se nekoukal na kod, ktery jsem ti nahore daval, vid?
Do hintu tlacitka jsem ulozil adresu, kterou chces otevrit a v obsluze OnClick jsem ti ji nacetl do promenne.
V tom m je vždy načtena ta adresa 192.168.1.15, 192.168.1.20, 192.168.1.28
Ja myslel, že když v procedure TForm1.Button1Click změním to s:= lHTTP.Get('192.168.1.15');
na s:= lHTTP.Get(m); tak každy buton bude mit jinou adresu.
Tak vyřešeno.
Nakonec jsem to nacpal do StringGridu.