Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - uložení nastavení programu.

Dobrý den,
naklikal jsem si v Delphi jeden jednoduchý prográmek. Mám tam pár checkboxů, listboxů a comboboxů. Listboxy ukládám do samostatných txt souborů, díky
http://pc.poradna.net/q/view/778114-delphi-listbox #r778118
ale jak na checkboxy a comboboxy? Bohužel to ani nikde nemohu na internetu najít, přitom mi to příjde jako celkem zásadní věc pro použitelnost programů :-| Jak se to tedy řeší? Je na to něco jednoduchého?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak bych ještě potřeboval trknout. Mám proceduru, kterou spouštím tlačítkem. Jak teď udělat, aby se…
delfínek 13.06.2012 16:02
delfínek
Takze u tlacitka Button4 mas udelanou udalost OnClick. V objectInspector u tlacitka Button7 jako uda…
Jan Fiala 13.06.2012 16:35
Jan Fiala
Děkuji. Toho rozbalovacího seznamu jsem si nevšiml, to je paráda. Ale to volání funkce nechce fungov…
delfínek 13.06.2012 16:55
delfínek
Jen form1, bez toho T. Tform1 je typ. ... then form1.Button4Click(Sender); A za druhé. Když je But…
J.M. 13.06.2012 17:34
J.M.
No je vidět, že musím ještě pilovat základy. Toto samozřejmě funguje. Děkuji. nový
delfínek 13.06.2012 18:35
delfínek
Tohle nechapu. Co vlastne chces delat a proc podle nastaveni nejakeho ComboBoxu volas udalosti, kter… nový
Jan Fiala 13.06.2012 17:46
Jan Fiala
Pokud je v comboboxu vybráno "po spuštění programu", tak chci spustit tu samou proceduru, která se j… nový
delfínek 13.06.2012 18:41
delfínek
Sender je objekt (ukazatel na nej), ktery udalost vyvolal. Nil = nic, prazdny ukazatel. Pokud nepotr… poslední
Jan Fiala 13.06.2012 19:29
Jan Fiala

Tak bych ještě potřeboval trknout. Mám proceduru, kterou spouštím tlačítkem. Jak teď udělat, aby se spustila i dalším tlačítkem? Zkusil jsem to napsat jako samostatnou proceduru a oběma tlačítkama ji volat, ale to mi nefungovalo, protože z té samostatné procedury to psalo chybu u jakékoliv práce s formulářem :(

procedure TForm1.Button7Click(Sender: TObject);
begin
  tform1.Button4Click(?);
end;

Takze u tlacitka Button4 mas udelanou udalost OnClick.
V objectInspector u tlacitka Button7 jako udalost OnClick vyberes z rozbalovaciho seznamu Button4Click.
A nemusis nic programovat, obe tlacitka budou pouzivat stejnou udalost.

K tomu tvemu prikladu, jako parametr pousijes Sender, ktery ti predala udalost Button7Click:

procedure TForm1.Button7Click(Sender: TObject);
begin
  tform1.Button4Click(Sender);
end;

Děkuji. Toho rozbalovacího seznamu jsem si nevšiml, to je paráda. Ale to volání funkce nechce fungovat. Kontroluji to s nastavením

if ComboBox1.ItemIndex=1 then tform1.Button4Click(Sender);

a píše to

unit1.pas(252,54) Error: Wrong number of parameters specified for call to "Button4Click"
unit1.pas(123,18) Hint: Found declaration: TForm1.Button4Click(TObject);
unit1.pas(259) Fatal: There were 1 errors compiling module, stopping

Prošel jsem si celou kapitolu učebnice o funkcích a procedurách a nic jsem nenašel co bych mohl dělat špatně.
:.(

Jen form1, bez toho T. Tform1 je typ.

... then form1.Button4Click(Sender);

A za druhé. Když je Button7Click i Button4click ve stejném formuláři, je lepší napsat to prostě jako then Button4Click(Sender) bez toho form1. Kdybys totiž vytvořil další formuláře typu TForm1, pak klik na kterýkoli button7 ti zavolá Button4Click v tom prvním formuláří, a ne v tom, kde je klikaný button.

procedure TForm1.Button7Click(Sender: TObject);
begin
Button4Click(Sender);
end;

Pokud je v comboboxu vybráno "po spuštění programu", tak chci spustit tu samou proceduru, která se jinak spouští tlačítkem. Takže vlastně tu proceduru Button4Click spouštím na základě porovnání hodnoty comboboxu při form.create. Nyní to již funguje. Evidentně v tom mám ještě zmatek, ale to se snad všechno vypiluje. :puff:

Ještě dotaz, jaký je rozdíl mezi (nil) a (sender) a k čemu to tam vůbec je, když není potřeba proceduře nic předat?

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