![]() |
Komponenten zur Laufzeit oder Entwicklungszeit
Hallo zusammen,
ich habe mal ein Grundlegende Frage. Ich benötige eine Oberfläche mit mehrer TabSheets und 500 Edit´s, 100 ALed´s. Diese Oberfläche im Designmodus zu erstellen, wäre ja möglich. Allerdings fehlt mir da ein Punkt, den ich später benötigen werde. Ich versuche das ganze mal zu beschreiben. Ich habe verschieden Systemzustände (Hardware), Funktionszustände (Hardware) und Mengen (Hardware). Diese Systemzustände sollen Ihren Funktionszustand an Hand der Edit und Led Komponenten anzeigen. Der Systemzustand wäre eine Text -> Edit Komponente, Der Funktionszustand wäre ein Bool -> Led Komponente und die Menge ist Hardwareabhängig. Desweiteren sind die Systemzustände in der Hardware frei konfigurierbar, wodurch es sein kann, das nicht die Systemzustände 1-30 vorhanden sind, sondern die Systemzustände 1,23,50,20,....usw. Und hier ensteht, genau mein Gedanken Problem, hätten die Systemzustände eine Vortlaufende Nummer, könnte ich einfach mit
Delphi-Quellcode:
auf die Komponente zugreifen. Da ich aber dann unter umständen ein ziemlich ungeordnete Oberfläche hätte, würde ich diese geren vermeiden. Somit gibt es für mich jetzt zwei Möglichkeiten, ich erstellen die Edit´s mit einers SystemID erst zur Laifzeit, wenn die Systemzustände bekannt sind, allerdings stelle ich mir das sehr aufwendig vor und vorallem bei 500 Edit´s unübersichtlich.
tEdit(FindComponente('Edit'+IntToStr(Systemzustand)...
Die zweit wäre eventuell alle Edit´s etc. zur Laufzeit mit einer Art ID zuversehen, oder die Edit´s die benötigt werden und die übrigen auf Visible = false zu belassen. Das Problem ist, bei der Zuweisung eines Systemwertes, möchte ich aber irgendwie vermeiden immer alle Komponenten zu initialisieren. Da möchte ich nu auf die Komponente zugreifen die gerade gefordert wird. Also irgendwie sowas...
Delphi-Quellcode:
Ist sowas irgendwie möglich. Oder wie würde man an sowas programmieren.
Edit(Systemzustand).Text := 'Ich bin der Systemwert';
Ich hoffe ich konnte mein Problem so einigermaßen beschreiben. Gruß Jens |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Ich würde die Komponenten zur Laufzeit erzeugen. Das Deaktivieren düfte ja auch nicht werniger Aufwand bereiten.
|
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Folgende Idee:
Delphi-Quellcode:
type
TSystemzustand = (Zustand1=1, Zustand2=23, ... Zustandz); type TmeinForm = class(TForm); var zustandEdits: array[Low(TSystemZustand)..High(TSystemzustand)]; ... procedure TMeinForm.FormCreate() for i := Low(TSystemZustand) to High(TSystemzustand) do begin zustandEdits[i] := TEdit.Create(self); ... end; end; procedure TMeinForm.DoWithEdit(zustand: TSystemzustand); begin zustandEdits[zustand].Text := 'text'; end; |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Zur Laufzeit in Objektlisten, parallel dazu gegf. eine Mappingstringlist um dynamisch über Namen(Stings) zugreifen zu können.
Bei der Menge an Edits wäre es wg. der Anzahl der Handles gegf. interessant (sofern nichts editiert werden muß) andere gegf. eigene (Graphic)Controls zu verwenden. |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Zitat:
Also, die Komponenten darum, Label´s, Button´s etc. Ansonsten müsste ich ja evntuell über ein Frame gehen oder so. Also so eine Art Platzhalter für meine Edit´s etc. Zitat:
Delphi-Quellcode:
Die Werte (Zustand1=1, Zustand2=23, ... Zustandz);
type
TSystemzustand = (Zustand1=1, Zustand2=23, ... Zustandz); könnten sich ja zur Laufzeit ändern, und die Werte sind von Kunde zu Kunde anders. Diese müsste ich aus einer Systemtabelle nehmen.
Code:
Gruß Jens
Systemzustand 1 = 1101;
Systemzustand 3 = 1102; Systemzustand 12 = 1103; [Edit] Zur Laufzeit in Objektlisten, parallel dazu gegf. eine Mappingstringlist um dynamisch über Namen(Stings) zugreifen zu können. Bei der Menge an Edits wäre es wg. der Anzahl der Handles gegf. interessant (sofern nichts editiert werden muß) andere gegf. eigene (Graphic)Controls zu verwenden.[/Edit] Es müsste nicht editiert werden. Eine reine Anzeige. |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Ganz genau verstanden habe ich Dein Projekt noch nicht (ist aber eigentlich normal :stupid:).
Grundsätzlich würde ich den Zugriff auf die Controls nicht über den Namen regeln, sondern den Edits und LEDs eigene Komponenten ableiten und denen einen "Controler" zuordnen. In den Controlern kannst Du dann die "zuständige" Definition und Werte hinterlegen. Der Controler steuert dann das zugehörige Edit und das Edit gibt geänderte Werte an den Controler. Die Controler sammelst Du in einer Liste und kannst dfarüber immer den korrekten Ansprechpartner suchen. Ob die Controls in der IDE designt oder zur Laufzeit erstellt werden sollen, ist wohl von der Komplexizität der Möglichkeiten abhängig. Wenn das mit einigen Vorlagen zu lösen ist, würde ich das in der IDE machen (evtl. auch mit Frames oder eingebetteten Forms). Wenn die Anzahl der benötigten Controls nicht vorhersehbar ist aber die Anordnung sehr einfach ist, würde ich das zur Laufzeit lösen. |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Wieso brauchst du pro "Systemzustand" ein TEdit?
Also ich meine das wäre besser in einem StringGrid aufgehoben. Und für die vielen Boolean-Zustände eignet sich eine TCheckListbox. |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Zitat:
Daher die ALed Kompo. Gruß Jens |
AW: Komponenten zur Laufzeit oder Entwicklungszeit
Morgen zusammen,
ich habe gestern noch lange experimentiert. Also zur Zeit versuche ich das ganze doch zur Laufzeit zu erstellen. Das klappt auch soweit und somit hoffe ich Euch bald ein Ergebnis hier vorstellen zu können, welches Ihr dann mal beurteilen könnt. Vorerst vielen Dank und Gruß:thumb: Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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