Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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;
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
No moc jsem nepochopil. Vytvořit par tlačitek pod sebou zvladnu. Jak však vytvořit za běhu pro každe… nový
Vašek.P 01.07.2016 18:22
Vašek.P
Áno, JaFi Ti už dal hotový program, Ty už len musíš dorobiť načítanie IP adries zo súboru... Po stla… nový
pme 01.07.2016 18:30
pme
Ako vidím, nie je to o nepochopení, ale o logickom rozmýšľaní... No on je problem ten, že umim vytv… nový
Vašek.P 01.07.2016 22:03
Vašek.P
Obsluha je pre každé tlačítko tá istá... pochopiteľne... netreba robiť pre každé tlačíttko zvlášť ob… nový
pme 02.07.2016 11:23
pme
Chybku jsem tam mněl :-[ procedure TForm1.FormCreate(Sender: TObject); var TS: TStringList; B: TBut… nový
Vašek.P 01.07.2016 22:38
Vašek.P
premennú m:String {m := Copy(s, Pos(',', s) + 1, MaxInt);} nikde nepoužiješ - čo s stým chceš ďalej… nový
pme 02.07.2016 11:26
pme
Zrejme jsi se nekoukal na kod, ktery jsem ti nahore daval, vid? Do hintu tlacitka jsem ulozil adresu… nový
Jan Fiala 02.07.2016 15:48
Jan Fiala
premennú m:String {m := Copy(s, Pos(',', s) + 1, MaxInt);} nikde nepoužiješ - čo s stým chceš ďalej… nový
Vašek.P 02.07.2016 21:36
Vašek.P
Tak vyřešeno. Nakonec jsem to nacpal do StringGridu. poslední
Vašek.P 03.07.2016 10:44
Vašek.P

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í...

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

procedure TForm1.Button1Click(Sender: TObject);
var
  lHTTP: TIdHTTP;
  s: string;
begin
  Beep;
  lHTTP := TIdHTTP.Create(nil);
  lHTTP.Request.BasicAuthentication:=True;
  lHTTP.Request.Username := 'admin';
  lHTTP.Request.Password := 'admin';

  try
    s:= lHTTP.Get('http://192.168.1.15');
  finally
    lHTTP.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 TS: TStringList;
 B: TButton;
 s,m:string;
 i:integer;
begin
  TS := TStringList.Create;
  TS.LoadFromFile('setup.txt');

  for i  := 0 to TS.Count-1 do
  begin
    s:= TS[i];
    B := TButton.Create(Self);
    B.Caption := Copy(s, 1, Pos(',', s)-1);
    m := Copy(s, Pos(',', s) + 1, MaxInt);
    B.Parent := Self;
    B.Height := 23;
    B.Width := 100;
    B.Left := 10;
    B.Top := 10 + i * 25;
    B.OnClick := Form1.Button1Click;
  end;
  TS.Free;
end;

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:

procedure TForm1.MyButtonClick(Sender: TObject);
var
  Button: TButton;
begin
  Button := Sender as TButton;                           <= práve toto je to stlačené tlačítko
  ShowMessage(Button.Caption + ' clicked');              <= zobrazí sa to čo nesie tlačítko ako titulok, vždy bude iný....
end;

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:

var
  Button: TButton;
  moja_premenna: String
begin
  Button := Sender as TButton;                          
  moja premenna:= Button.Caption;     

  ...
  try
    s:= lHTTP.Get(moja_premenna;
  ...
           
end;

Naozaj toto sú jednoduché veci, predávanie parametrov sú úplné základy...

Chybku jsem tam mněl :-[

procedure TForm1.FormCreate(Sender: TObject);
var
 TS: TStringList;
 B: TButton;
 s,m:string;
 i:integer;
begin
  TS := TStringList.Create;
  TS.LoadFromFile('setup.txt');

  for i  := 0 to TS.Count-1 do
  begin
    s:= TS[i];
    B := TButton.Create(Self);
    B.Caption := Format(Copy(s, 1, Pos(',', s)-1), [i]);
    m := Copy(s, Pos(',', s) + 1, MaxInt);
    B.Parent := Self;
    B.Height := 23;
    B.Width := 100;
    B.Left := 10;
    B.Top := 10 + i * 25;
    B.OnClick := Form1.Button1Click;
  end;
  TS.Free;
end;

premennú m:String {m := Copy(s, Pos(',', s) + 1, MaxInt);} nikde nepoužiješ - čo s stým chceš ďalej robiť?

V tom m je vždy načtena ta adresa 192.168.1.15, 192.168.1.20, 192.168.1.28

Zapní1,http://192.168.1.15
Zapní2,http://192.168.1.20
Zapní3,http://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.

Zpět do poradny Odpovědět na původní otázku Nahoru