![]() |
Edit mit variabler Nummer
[b]Hallo DPler. Ich hab da mal ne blöde Frage. Ich hab ein Projekt in VB programmiert und bi jetzt umgestiegen auf DP. Mein Problem: Ist es Möglich eine Edit komponente zu nummerieren? zB. Edit[1] anstatt Edit1. Habe schon die Edit komponente umgeschrieben damit ich den Text zentrieren kann, aber die Funktion wäre absolut hilfreich, da ich ca 40 Editfelder habe und diese teilweise gleich behandle wegen focus und keypress ereignissen und so.
Hat jemand eine Idee. Bin langsam echt am verzweifeln. Danke Gruß Udo :gruebel: |
Re: Edit mit variabler Nummer
Erstell doch eine Array
Delphi-Quellcode:
Dann kannst dein edit immer mit
Edit: array[1..40] of TEdit;
Delphi-Quellcode:
ansprechen
Edit[Nummer]
//Edit: Hups syntax Fehler :wall: - korriegiert! MFG Maximus |
Re: Edit mit variabler Nummer
Entweder mit einem Array of TEdit oder in einer Schleife und dann mittels FindComponent draufzugreifen.
|
Re: Edit mit variabler Nummer
Dieses visuelle erstellen eines Arrays, wie dieses unter VB möglich ist, geht in Delphi nicht. Irgendwann habe ich mal eine einleuchtende Erklärung dazu gelesen, leider diese aber nicht parat.
Wie dem auch sei, erstelle die Komponenten im Form-OnCreate Ereignis dynamisch und schiebe sie dann in ein Array. Das ist ohnehin die elegantere Lösung ;) Ansonsten kannst Du beim Start Dein Array auch nachträglich mit Hilfe einer Schleife und ![]() ...:cat:... |
Re: Edit mit variabler Nummer
Also ich erstelle alle Editfelder mit dem OnCreate Ereignis und bilde daraus einen Array und greife darauf zu. Jetzt habe ich den Fehler Undefinierter Bezeichner: 'Edit'
Ich hoffe ich peil das mal noch.
Delphi-Quellcode:
Was mache ich falsch. Muss ich Edit noch als var definieren, wenn ja als was ?
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TEditNew = class(TEdit) public procedure CreateParams(var Params: TCreateParams); override; end; var Form1: TForm1; Edit5: TEditNew; Edit6: TEditNew; Edit7: TEditNew; implementation {$R *.dfm} { Editfeld zentriert Ausgerichtet } procedure TEditNew.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style or ES_CENTER end; procedure TForm1.FormCreate(Sender: TObject); begin Edit5 := TEditNew.Create(Self); Edit5.Parent := Self; Edit5.Text := '100'; Edit5.SetBounds(184,96,45,24); Edit5.Font.Style := [fsBold]; Edit5.Font.Name := 'Arial'; Edit5.Font.Height := 15; Edit5.TabStop := True; Edit5.TabOrder := 0; Edit6 := TEditNew.Create(Self); Edit6.Parent := Self; Edit6.Text := '10'; Edit6.SetBounds(184,120,45,24); Edit6.Font.Style := [fsBold]; Edit6.Font.Name := 'Arial'; Edit6.Font.Height := 15; Edit6.TabStop := True; Edit6.TabOrder := 0; Edit7 := TEditNew.Create(Self); Edit7.Parent := Self; Edit7.Text := '20'; Edit7.SetBounds(184,144,45,24); Edit7.Font.Style := [fsBold]; Edit7.Font.Name := 'Arial'; Edit7.Font.Height := 15; end; procedure TForm1.FormActivate(Sender: TObject); begin Edit: Array[5..7] of TEditNew; end; end. |
Re: Edit mit variabler Nummer
mach bitte die code-klammern auch wieder zu ;)
zudem ginge das so:
Delphi-Quellcode:
Edit: array[5..7] of TEditNew;
implementation procedure onFormCreate; begin Edit[5]:=TEditNew.Create; Edit[5].Text:='ich bin edit5'; end; |
Re: Edit mit variabler Nummer
Hey supii, Danke
Das ist ja gar nicht so umständlich. Hey Danke echt super von Euch. Danke auch für den Tip mit der Code Klammer Gruß Udo :wall: :dancer2: |
Re: Edit mit variabler Nummer
die geht mit [./code.] wieder zu, net mit [.code.]
;) die buttons zu benutzen is einfacher.... |
Re: Edit mit variabler Nummer
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; begin for i := 0 to length(EditArray) - 1 do begin EditArray[i] := TEdit.Create(Form1); EditArray[i].Parent := Form1; EditArray[i].Name :='Edit'+IntToStr(i); EditArray[i].Left := 10; EditArray[i].Top := i*(EditArray[i].Height+10)+10; EditArray[i].Text := EditArray[i].Name; end; end; |
Re: Edit mit variabler Nummer
Habs schon Danke.
Aber du weist ja aller Anfang ist schwer und manchmal dauert der Anfang auch länger. :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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