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?
Těch možností je hodně.
Každopádně pokud listboxy ukládáš do txt, pak by jsi neměl zbytečné lezt ještě do registru ale měl by jsi udělat nějakej konfigurační soubor - objektovej či INI:
Triky.htm
Triky.htm
lezt do registru je jednoduchsie jak parsovat syntax a robit error checking a opravovat to ked sa to poskodi apod.
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 :(
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:
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
a píše to
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;
No je vidět, že musím ještě pilovat základy. Toto samozřejmě funguje. Děkuji.
Tohle nechapu. Co vlastne chces delat a proc podle nastaveni nejakeho ComboBoxu volas udalosti, ktere se volaji po stisknuti tlacitek?
TForm1 tam nema co delat. Zavolej jen Button4Click(nil);
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.
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?
Sender je objekt (ukazatel na nej), ktery udalost vyvolal. Nil = nic, prazdny ukazatel.
Pokud nepotrebujes predavat objekt, muzes predat nil.
Pokud procedure neco predas a ona to nepotrebuje zpracovavat, nic se nestane.