Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi viele componenten auf visible := false setzen? (https://www.delphipraxis.net/10480-viele-componenten-auf-visible-%3D-false-setzen.html)

Pseudemys Nelsoni 19. Okt 2003 18:44

Re: viele componenten auf visible := false setzen?
 
danke dir :)

Hansa 19. Okt 2003 18:52

Re: viele componenten auf visible := false setzen?
 
Zitat:

Zitat von alexander
Findcomponent sucht in diesem Fall nach den Edits mit dem NAmen "'Edit' + IntToStr(laufVar)", besser geht es wohl nciht...

...weil Delphi sämtliche Komponenten in einer Baumstruktur speichert. So ähnlich wie die Registry. In dem Beispiel wird mit
Delphi-Quellcode:
AS TEdit
die Suche eben auf den "Zweig" beschränkt, der aus den TEdits besteht und den davon abgeleiteten Typen. Im Prinzip bräuchte man das AS nicht.

Alexander 19. Okt 2003 19:11

Re: viele componenten auf visible := false setzen?
 
Jupp, genau so.
Nur das man das "AS" meiner Meinung nach schon braucht.

himitsu 19. Okt 2003 19:15

Re: viele componenten auf visible := false setzen?
 
konnte nicht gehen, hatte 'ne ")" vergessen:
TEdit(FindComponent('Edit' + IntToStr(I))).Visible := False;

es ist nicht möglich einer Kombination aus Stringkonstannte, Stringfunktion und Eigenschaft einen Wert zu zuweisen:
Zitat:

'Edit' + IntToStr(I).Visible := False;

Add:
Komponente suchen und in TEdit konvertieren:
Delphi-Quellcode:
TEdit(FindComponent('Edit' + IntToStr(laufVar))).Enabled
Komponente als TEdit suchen:
Delphi-Quellcode:
(FindComponent('Edit' + IntToStr(laufVar)) as TEdit).Enabled

Pseudemys Nelsoni 19. Okt 2003 19:36

Re: viele componenten auf visible := false setzen?
 
das:

Delphi-Quellcode:
TEdit('Edit' + IntToStr(laufVar)).Enabled
funzt bei mir nicht, ich bekomme eine zugriffsverletzung

CalganX 19. Okt 2003 19:44

Re: viele componenten auf visible := false setzen?
 
Hi,
dann schreib folgendes:
Delphi-Quellcode:
hCmp := FindComponent('Edit' + IntToStr(i)); // hCmp ist vom Typ TComponent
if (hCmp is TEdit) and (hCmp <> nil) then
  (hCmp as TEdit).Enabled := false
else
  ShowMessage('Error');
Chris

Christian Seehase 19. Okt 2003 23:33

Re: viele componenten auf visible := false setzen?
 
Moin silent,

Zitat:

Zitat von silent
das:

Delphi-Quellcode:
TEdit('Edit' + IntToStr(laufVar)).Enabled
funzt bei mir nicht, ich bekomme eine zugriffsverletzung

kann auch nicht klappen.

'Edit' + IntToStr(laufVar) ist ein String. Der normale Hugestring ist ein Pointer und mit der o.g. Konstruktion erzwingst Du einen Typecast eines Stringpointers auf einen TEdit Pointer zur Laufzeit, und das führt zur AV, da ein String kein TEdit Objekt ist.

Verallgemeinert:

Mit
Delphi-Quellcode:
TKlassenBezeichner(WasAuchImmerFuerEinPointerHierAngegebenWird)
erzwingst Du, dass der in den Klammern stehende Pointer vom Compiler als vom Typ TKlassenBezeicher angesehen wird. Kann man machen, wenn sichergestellt ist, dass der Pointer vom Typ TKlassenBezeichner, oder eine davon abgeleitete Klasse ist.
Wichtig ist, dass der Programmierer bei dieser Konstruktion die Verantwortung dafür übernimmt, dass die Typen zusammen passen.

Machst Du es hingegen so

Delphi-Quellcode:
(WasAuchImmerFuerEinPointerHierAngegebenWird AS TKlassenBezeichner)
übernimmt der Compiler schon beim Compilieren die Typüberprüfung, und meckert wenn's nicht passt.

himitsu 20. Okt 2003 00:07

Re: viele componenten auf visible := false setzen?
 
Uuups! :oops::oops:

TEdit('Edit' + IntToStr(laufVar)).Enabled => TEdit(FindComponent('Edit' + IntToStr(laufVar))).Enabled

(siehe Chris)

InSys 20. Okt 2003 00:46

Re: viele componenten auf visible := false setzen?
 
:lol:
Delphi-Quellcode:
Procedure TForm1.editclear;
Var Count : Integer;
Begin //
 For Count:=0 to ComponentCount-1 do
  If Components[Count] is TEdit Then Begin
                                       TEdit(Components[Count]).Clear;
                                       {edit(Components[Count]).Color:=ClInfoBk;}
                                      END;
end;
[edit=sakura]Delphi-Tag geschlossen Mfg, sakura[/edit]

InSys 20. Okt 2003 00:53

Re: viele componenten auf visible := false setzen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
:lol: :lol: :lol:

[edit=FuckRacism]Beitrag leserlich gemacht. Aber was soll der Anhang? Ist doch genau des gleiche wie in dem Post davor! Mfg, FuckRacism[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Seite 2 von 2     12   

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