AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponenten zur Laufzeit oder Entwicklungszeit
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten zur Laufzeit oder Entwicklungszeit

Ein Thema von Jens Hartmann · begonnen am 30. Jan 2011 · letzter Beitrag vom 31. Jan 2011
Antwort Antwort
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 10:54
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

tEdit(FindComponente('Edit'+IntToStr(Systemzustand)... 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.

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...

Edit(Systemzustand).Text := 'Ich bin der Systemwert'; Ist sowas irgendwie möglich. Oder wie würde man an sowas programmieren.

Ich hoffe ich konnte mein Problem so einigermaßen beschreiben.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 10:58
Ich würde die Komponenten zur Laufzeit erzeugen. Das Deaktivieren düfte ja auch nicht werniger Aufwand bereiten.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 11:01
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;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 11:41
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 11:51
Zitat von mkinzler:
Ich würde die Komponenten zur Laufzeit erzeugen. Das Deaktivieren düfte ja auch nicht werniger Aufwand bereiten.
Wenn ich sie deaktivieren würde stimmt das, allerdings, wenn ich Standardmäßig alle auf Visible = false habe, braucht ich nur die tatsächlichen auf "true" zu setzten. Den Vorteil den ich sehen, ist der, das ich zur Entwicklungszeit meine Oberfläche immer sehe und somit somit besser meine GUI erstellen kann.

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 von Bernhard Geyer:
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;
Finde ich sehr gut, allerdings bin ich wie oben schon genannt noch am überlegen, ob ich die Edits zur Laufzeit oder Entwicklungszeit erstelle. Das sollte ja auch bei deiner Idee möglich sein. Ich habe nur ein Problem mit folgendem Type:

Delphi-Quellcode:
type
  TSystemzustand = (Zustand1=1, Zustand2=23, ... Zustandz);
Die Werte (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:
Systemzustand 1 = 1101;
Systemzustand 3 = 1102;
Systemzustand 12 = 1103;
Gruß Jens

[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.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 13:19
Ganz genau verstanden habe ich Dein Projekt noch nicht (ist aber eigentlich normal ).

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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 15:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 30. Jan 2011, 18:18
Zitat von sx2008:
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.
Die Edit´s bezüglich der "Graphische Einteilung(Anordnung)". Das selbe gilt für die LED Komponente.´Checkboxen wären da falsch, da ich die Farben grün, rot und gelb benötige.
Daher die ALed Kompo.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Komponenten zur Laufzeit oder Entwicklungszeit

  Alt 31. Jan 2011, 07:41
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ß

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz