![]() |
viele componenten auf visible := false setzen?
hoi, ich habe in meinem prog ziemlich viele compnenten die bei einem buttonklick disabled sein müssen...hab das jetzt gerade so:
Delphi-Quellcode:
gibt es auch eine andere möglichkeit? ausser schleifen....
Edit1.Enabled := false;
Edit2.Enabled := false; Edit3.Enabled := false; Edit4.Enabled := false; Edit5.Enabled := false; Edit6.Enabled := false; Edit7.Enabled := false; Edit8.Enabled := false; Edit9.Enabled := false; Edit10.Enabled := false; |
Re: viele componenten auf visible := false setzen?
Moin Silent,
Zitat:
Aber was hast Du gegen Schleifen? |
Re: viele componenten auf visible := false setzen?
entweder:
Delphi-Quellcode:
oder die Edit's auf ein Panel und dann:
For I := 1 to 10 do
TEdit(FindComponent('Edit' + IntToStr(I)).Visible := False;
Delphi-Quellcode:
den Rahmen vom Panel kannst'e auch wegmachen, dann fällt er nicht auf
Panel1.Visible := False;
|
Re: viele componenten auf visible := false setzen?
Zitat:
Zitat:
theoretisch müsste es so:
Delphi-Quellcode:
auch gehen oder?
For I := 1 to 10 do
'Edit' + IntToStr(I).Visible := False; Zitat:
danke für die antworten schonmal :) |
Re: viele componenten auf visible := false setzen?
Da muss ich Christian recht geben, Schleifen gehören zu den praktischsten Sachendie man in einem Programm einbasteln kann!!!!!
|
Re: viele componenten auf visible := false setzen?
Moin Silent,
was berwirkt "FindComponent"? FindComponent sucht im Array of Components der Komponente zu der es gehört nach einer Komponente mit dem angegebenen Namen, und gibt im Erfolgsfalle einen Pointer auf das Objekt zurück Zitat:
Zitat:
Delphi-Quellcode:
Panel1.Enabled := false;
|
Re: viele componenten auf visible := false setzen?
wieso funzt das:
Delphi-Quellcode:
for laufVar := 1 to 4 do
TEdit('Edit' + IntToStr(laufVar)).Enabled := false; denn nun nicht, zugriffsfehler? |
Re: viele componenten auf visible := false setzen?
Nicht getestet, aber versuch es mal so:
Delphi-Quellcode:
For laufVar := 1 to 4 do
(FindComponent('Edit' + IntToStr(laufVar)) as TEdit).Visible := False; |
Re: viele componenten auf visible := false setzen?
jo geht, hmm,, aber wozu findcomponent? muss eine gesucht werden?
|
Re: viele componenten auf visible := false setzen?
Findcomponent sucht in diesem Fall nach den Edits mit dem NAmen "'Edit' + IntToStr(laufVar)", besser geht es wohl nciht...
|
Re: viele componenten auf visible := false setzen?
danke dir :)
|
Re: viele componenten auf visible := false setzen?
Zitat:
Delphi-Quellcode:
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.
AS TEdit
|
Re: viele componenten auf visible := false setzen?
Jupp, genau so.
Nur das man das "AS" meiner Meinung nach schon braucht. |
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:
Add: Komponente suchen und in TEdit konvertieren:
Delphi-Quellcode:
Komponente als TEdit suchen:
TEdit(FindComponent('Edit' + IntToStr(laufVar))).Enabled
Delphi-Quellcode:
(FindComponent('Edit' + IntToStr(laufVar)) as TEdit).Enabled
|
Re: viele componenten auf visible := false setzen?
das:
Delphi-Quellcode:
funzt bei mir nicht, ich bekomme eine zugriffsverletzung
TEdit('Edit' + IntToStr(laufVar)).Enabled
|
Re: viele componenten auf visible := false setzen?
Hi,
dann schreib folgendes:
Delphi-Quellcode:
Chris
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'); |
Re: viele componenten auf visible := false setzen?
Moin silent,
Zitat:
'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:
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.
TKlassenBezeichner(WasAuchImmerFuerEinPointerHierAngegebenWird)
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:
übernimmt der Compiler schon beim Compilieren die Typüberprüfung, und meckert wenn's nicht passt.
(WasAuchImmerFuerEinPointerHierAngegebenWird AS TKlassenBezeichner)
|
Re: viele componenten auf visible := false setzen?
Uuups! :oops::oops:
TEdit('Edit' + IntToStr(laufVar)).Enabled => TEdit(FindComponent('Edit' + IntToStr(laufVar))).Enabled (siehe Chris) |
Re: viele componenten auf visible := false setzen?
:lol:
Delphi-Quellcode:
[edit=sakura]Delphi-Tag geschlossen Mfg, sakura[/edit]
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; |
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 03:56 Uhr. |
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