Entwickler-Ecke
Datenbanken - Eigenschaften mehrerer DBEdit Felder gleichzeitig ändern
Josef-B - Di 27.02.07 22:25
Titel: Eigenschaften mehrerer DBEdit Felder gleichzeitig ändern
Ich habe so ca. 20 DBedits.
dbedit1, dbedit2, dbedit3 usw.
Jetzt will ich die alle auf readonly setzen.
Habe mir das ungefähr so gedacht:
Delphi-Quelltext
1: 2: 3:
| for i:= 0 to 19 do begin dbedit(i).????.readonly := true; |
So als array gehts sicher nicht, aber wie? oder bin ich da total auf dem Holzweg und ich muss
die dann alle einzeln auf readonly setzen?
Blawen - Mi 28.02.07 00:16
"Findcomponent" dürfte Dich weiterbringen
oldmax - Mi 28.02.07 13:56
Hi
Wenn deine Objektnamen mit einer laufenden Integerzahl enden, denn ist FindComponent der richtige Weg.
Delphi-Quelltext
1:
| TDBEdit(FindComponent('DBEdit'+IntToStr(i))).readonly := true; |
Gruß oldmax
hansa - Mi 28.02.07 14:52
oldmax hat folgendes geschrieben: |
| Wenn deine Objektnamen mit einer laufenden Integerzahl enden.. |
Nur zur Klarstellung :
das mit der Nummer am Schluss des Bezeichners ist keine Bedingung ! Sieht man des öfteren, dass die Leute das glauben.
Das hier ginge auch :
Delphi-Quelltext
1:
| TDBEdit(FindComponent('DB'+IntToStr(i)+'Edit')).readonly := true; |
Die Zahl im Namen dient lediglich zur Vereinfachung von Schleifen, zu sonst nichts.
oldmax - Mi 28.02.07 21:31
Hi
Natürlich hast du recht, aber es ist übersichtlicher mit der Zahl hinten, als wenn sie mitten im Namen steht.
Du kannst die Namen auch völlig durcheinander mit dem Object in eine TStringlist schreiben und über den Index zuordnen
MyList:=TStringlist.Create;
MyList.AddObject('erstesObject',MyEdit);
Auch damit ist ein Indizierter Zugriff auf verschiedene Objecte möglich. der Wege nach Rom sind halt viele....
Gruß oldmax
Josef-B - Mi 28.02.07 23:09
Egal ob der Zähler da jetzt vorne hinten oder in der Mitte steht, ich habs so gemacht, und es klappt wunderbar.
Allerdings hatte ich die Schleife mit findkomponent zuerst im AfterOpen von einer TIBQuery, da bekam ich eine Zugriffsverletzung. Dann habe ich ich das in eine eigene Prozedur ausgelagert, da klappte das. Wieso das sein kann, weiss ich nicht.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!