![]() |
Edit-Komponenten zur Laufzeit die Hintergrundfarbe ändern
Hab schon gesucht, aber eben nichts gefunden, was meinem Problem weiterhelfen könnte. Vielleicht hat ja hier jemand eine Idee, wie man das lösen könnte.
Problem: Ich habe ca 200 Edit-Felder, in die verschiedene Werte eingetragen werden. Diese sind in als Matrix angeordnet. Nun werden diese Werte miteinander verglichen. Wenn nun 2 oder mehr Werte in einer Spalte identisch sind, sollen die Hintergründe auf eine bestimmte Farbe gesetzt werden. Das Problem ist nicht die Nummern der Edit-Feldern herauszufinden, diese kann ich mir anhand des Arrays, in dem die Werte zum vergleichen und rechnen gespeichert sind, errechnen. Nur wie kann ich dann gezielt die 2 oder mehr Edit-Felder ansprechen? |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
Moin Ameisenbär,
Du kannst Dir doch einfach die in Frage kommenden Edits ein einer Liste Speichern, z.B. vom Typ TObjectList, TList oder einem davon abgeleiteten Typ. [EDIT] Wobei ich mich frage, ob für die genannte Anwendung ein StringGrid evtl. sinnvoller wäre. [/EDIT] |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
hm.. die Idee mit der Liste ist gut (Hatte ich in Java schon desöfteren, nur bin ich net auf die Idee gekommen es hier auch zu machen). In Frage kommen leider alle Komponenten, aber mit Copy und Paste geht das mim eintragen ja.
Mit StringGrids haut das ganze nicht hin. |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
Moin Ameisenbär,
mit den "in Frage kommenden Komponenten" meine ich die, bei denen die Werte übereinstimmen. Zitat:
Mir ist das Ganze Problem auch noch nicht so ganz klar geworden, denn sobald Du eine Übereinstimmung hast, kannst Du die Farbe ja genau bei den betreffenden setzen. |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
Beim Start des Programms muss ich also in die Liste alle Edit-Komponenten nacheinander eintragen, da der Vergleich während der Laufzeit öfters vorkommt. deswegen Copy und Paste. dann hab ich halt ca 200 Zeilen fürs eintragen in die Liste.
Hab mir das mit dem StringGrid nocheinmal angeschaut. könnte vielleicht doch gehen. Brauche dann eben 3 von denen, weil die Edit-Komponenten in 3 großen Matrizen aufgeteilt sind. Damit bräuchte ich aber mir die Nummer der Edit-Komponente nicht zu berechnen, sondern könnte genau die Array-Werte, die ich zum vergleichen nehme, verwenden. Um das Problem nocheinmal etwas ausführlicher zu schildern: Ich lese zuerst alle Edit-Felder aus und speicher diese in einem Array, da ich hiermit gut rechnen kann. dann werden immer 2 Array-Werte miteinander verglichen. Falls diese gleich sein sollten, dann soll die Hintergrundfarben der betreffenden Edit-Komponenten geändert werden. Nur ist da eben das Problem, wie ich diese Edit-Komponente anspreche ("EditXXX.Color"). |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
Moin Ameisenbär,
was Du Dir auf jeden Fall noch anschauen solltest ist
Delphi-Quellcode:
Einerseits hier, andereseits auch in der Hilfe.
FindComponent
Um, z.b., mit Hilfe einer TObjectList ein Array darzustellen: Es hindert Dich ja niemand ein einer TObjectList wieder eine TObjectList unterzubringen, so dass Du eine zweidimensionale Liste erhältst (=Matrix) Wenn diese nun garantiert TEdit enthalten genügt ein einfacher Typcast auf TEdit. Mal ein ganz grobes Beispiel:
Delphi-Quellcode:
var
ls1 : TObjectList; ls2 : TObjectList; begin ls1 := TObjectList.Create(false); try try ls2 := TObjectList.Create(false); ls1.Add(ls2); (ls1[0] as TObjectList).Add(Edit1); ShowMessage((ls2[0] as TEdit).Text); finally FreeAndNil(ls2); end; finally FreeAndNil(ls1); end; end; |
Re: Edit-Komponenten zur Laufzeit die Hintergrundfarbe änder
Ich bedanke mich für die Hilfe. Problem gelöst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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