![]() |
Combox, Checkbox, usw. selektiert ????
hallo leute,
ich habe eine funktion geschrieben der alle komponenten im form durchläuft und überprüft ob daten verändert worden sind oder nicht. allerdings durchläuft er nur die komponenten die zur klasse tcustomedit gehören also komponenten wie edit, memo werden durchlaufen, da gibt es die methode modified mit der ich immer abfragen konnte und es hat ganz gut geklappt soweit.
Delphi-Quellcode:
ich habe jetzt aber noch paar andere komponenten wie combobox und checkbox und soweiter und muss die funktion abstrahieren, zur welcher oberklasse gehören diese komponenten und wie kann ich überprüfen ob etwas selektiert wird oder nicht, gibt es da sowas ähnliches wie modified ??? ich habe schon bei Delphi-Hilfe gesucht, aber ich find nichts. :( procedure TForm1.fileModified (EdtCmp : TCustomEdit); begin if (EdtCmp As TCustomEdit).Modified then begin // mach irgendwas end; end; ich hoffe ihr könnt wir weiterhelfen... |
Re: Combox, Checkbox, usw. selektiert ????
Ninn TComponent oder TWinControl.
|
Re: Combox, Checkbox, usw. selektiert ????
mit diesen beiden klassen hatte ich es schon versucht aber weiss nicht mit welcher methode ich überprüfen kann ob was selektiert wurde oder nicht. bei tcustomedit ging das schön mit modified....
|
Re: Combox, Checkbox, usw. selektiert ????
Du kannst auch, wenn du die Komponenten entsprechend benannt hast, erstmal schauen, wie die Komponente heißt und dann auf den Komp.typ schließen.
Delphi-Quellcode:
Was ich aber machen würde, ist, dass du eine globale Variable namens "geaendert" nimmst und sie auf true setzt, wenn der Anwender etwas irgendwo rein schreibt.
function SiS(s,SubStr:string):boolean; //StringInString prüft, ob ein String in einem längeren vorkommt
begin result:=false; if Pos(SubStr,s)>0 then result:=true; end; function TypBestimmen(AComp:TComponent):string; var s:string; begin s:=AComp.Name; if SiS('edit',s) then result:='Editfeld' else if SiS('Checkbox',s) then result:='Checkbox' else if ... end; procedure TForm1.Button1Click(Sender: TObject); begin Showmessage(TypBestimmen(Editfeld{ as TComponent})); end; |
Re: Combox, Checkbox, usw. selektiert ????
Typbestimmen braucht man nicht. Wozu gibt es denn Classname.
Ich würde bei den Komponenten mit "Tag" arbeiten. Also im onChange-Ereignis denn Tag auf 1 setzen und dann einfach überprüfen. Hoffe geholfen zu haben Apollonius |
Re: Combox, Checkbox, usw. selektiert ????
hi,
ich möchte nicht bei jedem einzelnen komponenten das onchange ereignis aufrufen. sondern durch EINE funktion alle durchlaufen und abfragen.
Delphi-Quellcode:
so hatte ichs bis jetzt. Ich kann die Funktion nicht so umbauen, dass sie auch auf irgendwelchen selektionen von checkboxen, combobox usw. reagiert. da find ich keine passende methode. ich bräuchte sowas wie 'selected' (anstatt modified). :?
for i := 0 to Form1.ComponentCount-1 do
begin if ( self.components[i] Is TCustomEdit) then fileModified(Form1.components[i] As TCustomEdit); end; |
Re: Combox, Checkbox, usw. selektiert ????
Zitat:
|
Re: Combox, Checkbox, usw. selektiert ????
Ich hatte nicht vor, onChange ständig irgendwie aufzurufen. :wiejetzt:
Du weist allen Komponenten das selbe onChange zu. Dort wird der Tag der Komponenten verändert. In deiner Prüfprozedur schaust du dann nur nach, ob der Tag eben den entsprechenden Wert hat und setzt ihn gegebenenfalls wieder zurück. |
Re: Combox, Checkbox, usw. selektiert ????
ich danke euch erstmal für eure lösungsvorschläge, werde sie dann mal ausprobieren. :coder:
|
Re: Combox, Checkbox, usw. selektiert ????
Hallo,
Zitat:
Den Tipp entsprechend modifizieren, also farblich hervorheben > merken: dsdt: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz