Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Objekte adressieren


hRb - Fr 19.12.14 20:50
Titel: Objekte adressieren
Ich habe noch Probleme zur Adressierung von Objekten. In meiner Anwendung gibt es mehr als 10 Richedit-Objekte, die alle untereinander Textdaten austauschen sollen. Die einzelnen Textvorlagen liegen jeweils auf einen TTabbedNotebook-Objekt und lassen sich somit mit Nr 1..n in den Vordergrund bringen. Abwechselnd hat ein RichEdit-Objekt den Fokus und bezieht nach bestimmten Regeln seine Daten. Ich habe die Vorstellung, alle Richedit-Objekte als ein Array[1..n] darzustellen. Dann könnte ich alle Verarbeitungsfunktionen einfach mit den Parametern "vonREdit", "nachREdit" ansprechen. Wie formuliert man so etwas mit konkret vorhandenen Einzel-Objekten?


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 19.12.2014 um 21:21


OlafSt - Fr 19.12.14 22:15

Erzeuge ein Array aus TRichEdits:

Delphi-Quelltext
1:
2:
var
   REArray: array[1..8of TRichEdit;


Anschließend legst du die RichEdits einfach da rein:

Delphi-Quelltext
1:
2:
3:
  REArray[1]:=RichEdit1;
  REArray[2]:=RichEdit2;
  ...


Geht mit FindComponent noch simpler.

Das wars. Da du keine Kopie des Richedits anlegst, sondern nur deren Zeiger in das Array legst, kannst du nun per REArray an deine RichEdits ran.

That simple it is.


hRb - Sa 20.12.14 14:05

Danke, ich dachte, dass bei der Zuweisung eine Kopie entsteht und bei Änderung des Focus alles zurück zu speichern sei. (Hätte darauf auch selber kommen können. Sorry für solche Fragen)


OlafSt - So 21.12.14 20:27

Macht nix. Aber ich hätts einfach mal ausprobiert ;) Spätestens im CPU-Fenster sieht man dann, das da nur ein Zeiger kopiert wird und es wird einem schlagartig klar, das man schon seit Jahrzehnten mit Zeigern arbeitet, ohne es zu merken (und ohne ^) ;)