AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Steuerelementefeld zur Entwicklungszeit

Ein Thema von Guido Eisenbeis · begonnen am 8. Okt 2006 · letzter Beitrag vom 10. Okt 2006
Antwort Antwort
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Steuerelementefeld zur Entwicklungszeit

  Alt 8. Okt 2006, 12:39
Hallo.

Zum Thema Steuerelemente (Edit, ListView, ...) zur Laufzeit erstellen, habe ich einige Postings gefunden. Die funktionieren auch. Dort steigt der Aufwand allerdings enorm, wenn ich die Controls mit mehreren Ereignissen ausstatten will.

Auch um die Positionen der Controls zu "sehen", will ich diese zur Entwicklungszeit als Felder anlegen. Probiert habe ich nun schon einiges. Das wurde jedoch immer mit Exeptions nach dem Motto "Du kummst hier net rein!" quittiert.

Also: wie erstelle ich Steuerelementefelder (Controlarrays) zur Entwicklungszeit?

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 8. Okt 2006, 13:31
Du redest von "array of TControl"? Würde ich so machen:

Delphi-Quellcode:
function CollectControls(OfClass: TClass; Parent: TWinControl): array of TControl;
var arraypos: Integer;
    
begin
  //Init
  Setlength(Result, Parent.ControlCount);
  arraypos := 0;

  //Controls durchsuchen, wenn richtige Klasse gefunden, array hinzufügen
  for i := 0 Parent.ControlCount -1 do
    if Parent.Controls[i] is OfClass then
    begin
      Result[arraypos] := Parent.Controls[i];
      Inc(arraypos);
    end;

  //array trimmen
  Setlength(Result,arraypos+1);
end;
"Sammelt" alle Controls, die in einem Container (Parent) liegen und von einer bestimmten Klasse (OfClass) sind. Sollte es.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 8. Okt 2006, 23:50
Hallo Lukas.

Zunächst mal danke für die Antwort!

Morgen werde ich mir das mal genauer ansehen und ausprobieren.

Wie handhabe ich das denn dann mit den Ereignissen?

Gruß,
Guido.
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#4

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 9. Okt 2006, 13:01
Hallo Guido,
willst du nun Lauf- oder Entwicklungszeit? Die üblichen Ansätze und Lukas' Funktion funktionieren natürlich nur zur Laufzeit...

Zum Thema siehe auch: Control-Array / Laden von Controls zur Laufzeit (das waren noch Zeiten... )

Ereignisse kannst du ganz normal zuweisen überMyControls[i].OnMyEvent := MyEventHandler; Grüße, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 9. Okt 2006, 22:36
Hallo Lukas, hallo Marco.
Ein besonderer Gruß an Marco! Wir kennen uns schon aus "VB-Zeiten"

So wie ich den Thread Control-Array / Laden von Controls zur Laufzeit verstehe, entspricht das einer VB-Collection!?


Grundsätzlich an dieser Stelle vielen Dank für eure Hinweise! Die haben mich auf die richtige Spur gebracht.

Um es herauszustellen: Mir geht es hauptsächlich um Steuerelementefelder (Control arrays) zur Design-Time. Dennoch ist das in Delphi sehr eng mit Verwaltungsroutinen zur Run-Time verbunden.

Was ich erreichen will, ist das Platzieren und Einrichten von Controls zur Design-Time, die sich als Array verwalten und ansprechen lassen.
Beispiel: Vier Editfelder "Edit1", "Edit2", "Edit3" und "Edit4", die sich
verwalten lassen wie "Edit[1]", "Edit[2]", "Edit[3]" und "Edit[4]".

Ich habe weiter recherchiert und insbesondere der Suchbegriff "Control array" brachte gute Ergebnisse.

Design-Time: Accessing a group of design-time created components using an array
Run - Time : Accessing a group of run-time created components using an array

In diesen beiden Artikeln ist einiges an Information enthalten, die genau das oben beschriebene Thema betreffen. Und es gibt Demo zum Downloaden, was ich immer gut finde!

Ich werde mich nun damit beschäftigen. Falls es Interessen an diesem Thema gibt und an einer Lösung meinerseits (die ich hoffentlich finde), dann meldet euch hier. Ich halte euch dann über meine Ergebnisse auf dem Laufenden.

Guido.
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#6

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 10. Okt 2006, 11:54
Hallo Guido,
nun, die ganzen Codes tun nichts anderes als ein Array bereitzustellen, das mit Objektreferenzen auf die einzelnen Komponenten gefüllt ist.
D.h., was VB automatisch tut, muss in Delphi erst manuell vorbereitet werden.

An sich ist daran aber nichts Besonderes...

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Steuerelementefeld zur Entwicklungszeit

  Alt 10. Okt 2006, 21:44
Hi Marco.

Das stimmt wohl soweit. Und wie immer im Leben: "Wenn man's weiß, ist's ganz leicht!"

In VB sind Control Arrays einfacher anzulegen. In Delphi ist das mit mehr Arbeit verbunden, birgt aber auch sehr mächtige Möglichkeiten. In den oben genannten Artikeln wird auch auf das "Sharen" von Eventhandler hingewiesen. Das wusste ich vorher auch nicht. Jetzt werde ich das in vollen Zügen benutzen.

Grüße,
Guido.

PS: Ich hoffe, dass auch noch Antworten in meinem anderen Thread kommen. Da wo es um das Anordnen der Items in einem VELVEx geht. Matze und marabu haben in anderen Threads schon öfter Hilfe gegeben. Falls ihr das hier lest: Hiiieeelfe!
*smile*
  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 23:48 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