![]() |
alles deaktivieren (neuse Problem)
hi,
also das mit der überschrift- ich weiß nicht wie ich das nennen soll, sorry. problem: will mehrer edit felder auf visible := false stellen. leider sind das so viel das ich kein lust habe für jendes edit feld den befehl zu schreiben. gibt es eine möglichkeite sie alle aufeinmal auf visible := false zustellen ohne jedes mal edit1.text.visible := false usw. zu schreiben? danke |
Re: alles deaktivieren
Da gibt es wohl 2 Möglichkeiten:
Entweder alle auf ein Panel oder so was in der Art setzen und dann das Panel verstechen oder aber per Schleife alle Edits durchgehen (:arrow: ![]() |
Re: alles deaktivieren
Hallo,
mit FindComponent. In der Delphi-Hilfe ist ein Beispiel dazu. Sicherlich wirst Du im Forum genügend zum Thema finden. |
Re: alles deaktivieren
Hallo! FindComponent funktioniert aber in dem Fall nur, wenn du alle Edits durchnummeriert hast.
Probiers mal mit ComponentCount und Components[x].
Delphi-Quellcode:
Der Source hier versteckt alle Edits (nur auf dem Formular zu dem die Unit gehört, ansonsten musst du das halt genauer definieren => Form1.ComponentCount / Components[x])
var i : Integer;
begin For i := 0 to ComponentCount -1 do begin IF (Components[i] is TEdit) THEN (Components[i] as TEdit).Visible := false; end; end; Man liest sich, Stanlay :hi: |
Re: alles deaktivieren
jo danke für die hilfe- hat alles geklapt :)
|
Re: alles deaktivieren
noch eine frage:
das mit dem findcomponent hat ja gut geklappt- aber warum klapt das nicht bzw. was mus ich bei ''as tedit'' einsetzen? var a : integer; begin list := tstringlist.Create; list.SaveToFile ('test'); for a := 1 to 30 do list.add (findcomponent ('edit' + inttostr (a)) as tedit); end; danke |
Re: alles deaktivieren
du hast da was vergessen: Das müsste glaub ich vollständig heißen:
Delphi-Quellcode:
Du hast vergessen, die Text Eigenschaft anzuhängen...du versuchst ja quasi, eine Componente einer Liste hinzuzufügen.
list.add (findcomponent ('edit' + inttostr (a)) as tedit).Text;
Man liest sich, Stanlay :hi: |
Re: alles deaktivieren
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Hallo,
ich hbe es mal ein bißchen "auseinanderdividiert"
Delphi-Quellcode:
[EDIT] auf "Edit" umgestellt [/EDIT] :oops:
VAR
a : integer; aEdit : TEdit; BEGIN FOR a := 1 TO 3 DO BEGIN aEdit := TEdit(FindComponent('Edit' + IntToStr(a))); listbox1.items.add((aEdit AS TEdit).Name); END; END; |
Re: alles deaktivieren (neuse Problem)
Um APPs Beitrag noch zu ergänzen/zusammenzufassen (hab ich getestet):
Delphi-Quellcode:
Man liest sich, Stanlay :hi:
var list : TStringList;
a : Integer; begin List := TStringList.Create; . . //Dein Code = . . . . For a := 1 to 15 do List.Add((FindComponent('edit'+IntToStr(a)) as TEdit).Text); |
Re: alles deaktivieren (neuse Problem)
Zitat:
danke |
Re: alles deaktivieren (neuse Problem)
das wird ja immer schöner, hab wieder ein problem :oops:
das laden:
Delphi-Quellcode:
wenn ich den compiler starte sagt er nichts aber sobald ich auf den laden button klicke zeigt er mir eine fehlermeldung an. :wall:
var a,b : integer;
begin list := tstringlist.create; list.loadfromfile ('test'); for a := 1 to 3 do for b := 0 to 2 do (findcomponent ('edit' + inttostr (a)) as tedit).Text := list.Strings [b]; end; [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: alles deaktivieren (neuse Problem)
und welche Fehlermeldung? Gibt ja viele...:wink:
|
Re: alles deaktivieren (neuse Problem)
Der Code selber scheint in ordnung zu sein.
Nur das du am ende List wieder freigeben solltest. (List.Free;) Was für'n Fehler gibt der den aus. |
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Werden auch mindestens 3 Zeilen in "List" eingelesen?
Add: "maximum (0)" sagt das die StringList leer ist. |
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Wenn das Maximum Null ist (und der Index fängt erst bei 0 an) dann is die Liste leer, die du geladen hast.
|
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Du musst ganz sicher gehen, dass der Code, der vorher etwas in die Datei schreibt, auch ausgeführt wird...bist du da sicher?
|
Re: alles deaktivieren (neuse Problem)
Zitat:
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; list : tstringlist; implementation {$R *.dfm} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin list.free; end; procedure TForm1.Button1Click(Sender: TObject); var a : integer; begin list := tstringlist.Create; list.SaveToFile ('test'); for a := 1 to 3 do list.add ((findcomponent ('edit' + inttostr (a)) as tedit).text); end; procedure TForm1.Button2Click(Sender: TObject); var a,b : integer; begin list := tstringlist.create; list.loadfromfile ('test'); for a := 1 to 3 do for b := 0 to 2 do (findcomponent ('edit' + inttostr (a)) as tedit).Text := list.Strings [b]; end; end. |
Re: alles deaktivieren (neuse Problem)
Moin Wadim,
gewöhnst Du Dir bitte mal an die Delphi-Tags zu setzen, wenn Du Codeabschnitte postest. Danke. |
Re: alles deaktivieren (neuse Problem)
Zitat:
sorry kannst zeigen |
Re: alles deaktivieren (neuse Problem)
Moin Wadim,
dazu hast Du drei Möglichkeiten:
|
Re: alles deaktivieren (neuse Problem)
Delphi-Quellcode:
danke- kommt nicht wieder vor
also so ne
|
Re: alles deaktivieren (neuse Problem)
Hai Wadim,
der Code von dir ist nicht ohne Gefahr. du gibst im OnClose Ereigniss IMMER dein Objekt list frei. Ohne das es erstellt sein muss. Wenn keiner auf Button1 oder Button2 geklickt hat wurde es ja nicht erzeugt. Zitat:
|
Re: alles deaktivieren (neuse Problem)
War schon klar, das nichts gespeichert wurde.
Delphi-Quellcode:
List wurde erst in der Datei gespeichert und dann mit Daten gefüllt.
List.SaveToFile('test');
For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); Ausserdem hast du List entweder überhaupt nicht erstellt oder so oft wie du auf Button1 und/oder Button2 gedrückt hast.
Delphi-Quellcode:
Und am Ende, ohne Abfrage ob es existiert, 1-mal freigegeben.
List := TStringList.Create;
Delphi-Quellcode:
Und dann noch ein kleiner Fehler beim einlesen.
List.Free;
Wenn man diesen Code mal etwas optimiert, sieht man das immer nur der 3. List-Eintrag den Editfeldern zugewiesen wird.
Delphi-Quellcode:
Hab das unten mit abgeändert.
For a := 1 to 3 do
For b := 0 to 2 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[b]; For a := 1 to 3 do {v} (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[2];
Delphi-Quellcode:
Hier hatte sich auch die Fehlermeldung "maximum (0)" versteckt. (List war leer und Index 0 bis 2 wurde eingelesen)
For a := 1 to 3 do { v }
(FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; So müsste es geh'n:
Delphi-Quellcode:
-List wird beim erstellen der Formulars erzeugt und beim löschen des Forms wieder freigegeben.
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = Class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Procedure FormCreate(Sender: TObject); Procedure FormDestroy(Sender: TObject); Procedure Button1Click(Sender: TObject); Procedure Button2Click(Sender: TObject); End; Var Form1: TForm1; List: TStringList; Implementation {$R *.dfm} Procedure TForm1.TForm1.FormCreate(Sender: TObject); Begin List := TStringList.Create; End; Procedure TForm1.FormDestroy(Sender: TObject); Begin List.Free; End; Procedure TForm1.Button1Click(Sender: TObject); Var a: Integer; Begin List.Clear; For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); List.SaveToFile ('test'); End; Procedure TForm1.Button2Click(Sender: TObject); Var a: Integer; Begin List.LoadFromFile('test'); For a := 1 to 3 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; End; End. -Da List global definiert ist und daher schon etwas enthalten kann, sollte dessen Inhalt vorm einlesen löschen. (List.Clear;) Da List aber immer nur Lokal verwendet wird, kann man es auch Lokal definieren:
Delphi-Quellcode:
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = Class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Procedure Button1Click(Sender: TObject); Procedure Button2Click(Sender: TObject); End; Var Form1: TForm1; Implementation {$R *.dfm} Procedure TForm1.Button1Click(Sender: TObject); Var List: TStringList; a: Integer; Begin List := TStringList.Create; For a := 1 to 3 do List.Add((FindComponent('edit' + IntToStr(a)) as TEdit).Text); List.SaveToFile ('test'); List.Free; End; Procedure TForm1.Button2Click(Sender: TObject); Var List: TStringList; a: Integer; Begin List := TStringList.Create; List.LoadFromFile('test'); For a := 1 to 3 do (FindComponent('edit' + IntToStr(a)) as TEdit).Text := List.Strings[a - 1]; List.Free; End; End. |
Re: alles deaktivieren (neuse Problem)
Zitat:
|
Re: alles deaktivieren (neuse Problem)
Liste der Anhänge anzeigen (Anzahl: 1)
Nein. :oops:
Das Einzige, was man aber nicht direkt als Fehler ansehen kann, war eine doppelte Eingabe. (Ist aber erkennbar was da los ist.) Procedure TForm1.TForm1.FormCreate(Sender: TObject); gelöscht, getestet und es geht :hello: |
Re: alles deaktivieren (neuse Problem)
Zitat:
danke an alle die mir geholfen haben :zwinker: |
Re: alles deaktivieren (neuse Problem)
Stimmt - das war eines der kleine Probleme.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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