AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Beliebiges Edit ändern

Ein Thema von Samufi · begonnen am 1. Dez 2008 · letzter Beitrag vom 1. Dez 2008
Antwort Antwort
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#1

Beliebiges Edit ändern

  Alt 1. Dez 2008, 16:37
Hallo,
ich habe beliebig viele Editfelder und zu jedem einen RadioButton. Ich möchte, dass 'Inhalt' in das Edit geschrieben wird, dessen RadioButton angeklickt ist. Ist es möglich das ohne ein Ausschreiben mit 'if' hinzubekommen, wenn ja, ist das auch für eine unbegrenzte Anzahl Edits machbar? Zur besseren Verständlichkeit ist hier der Quellcode, mit dem die Edits erstellt werden:
Delphi-Quellcode:
unit Ausgabe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFrame1 = class(TFrame)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var frame1:Tframe1;

implementation

{$R *.dfm}
uses HauptUnit;
procedure TFrame1.Button1Click(Sender: TObject);

VAR I:Integer; newEdit, newEdit2:TEdit; newRadioButton:TRadioButton;
BEGIN
I:=Strtoint(HauptUnit.Form1.EditNR.text);
      newEdit2 := TEdit.Create(Self);
      newEdit2.Name := 'eCode'+IntToStr(I);
      newEdit2.Parent:=Self;
      newEdit2.Visible:=false;
      newRadioButton:=TRadioButton.Create(Self);
      newRadioButton.Name:='Markiere'+InttoStr(I);
      newRadioButton.Parent:=Self;
      newRadioButton.top:= I * 30 + 8;
      newRadioButton.Left:=4;
      newRadioButton.checked:=true;
      newRadioButton.caption:='';
      newRadioButton.Visible:=true;
      newRadioButton.Show;
      newEdit := TEdit.Create(Self);
      newEdit.Name := 'eAusgabe'+IntToStr(I);
      newEdit.Parent := Self;
      newEdit.Top := I * 30 + 8; {Abstand in Abhängikeit von I}
      newEdit.Left := 30;
      newEdit.Width := 500;
      newEdit.Ctl3D:=false;
      newEdit.borderstyle:=bsnone;
      newEdit.ReadOnly:=true;
      newEdit.Text:='';
      newEdit.Show;
HauptUnit.Form1.EditNR.text:=inttostr(I+1);
end;

end.
Es würde mir schon reichen, wenn man schreibt, wie man das Edit der Nr '?' bearbeiten kann, wenn man Nr zur Laufzeit eingeben kann.
Vielen Dank für alles Nachdenken!
Treuergebenst
Samufi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#2

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 16:39
Such mal nach FindComponent().
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:02
Danek, das hat schon geholfen. Wenn ich das jetzt auf einem Frame machen will sagt Delphi mir immer "Operator oder Semikolon fehlt". Was muss ich anders machen? Oder geht das in Frames nicht?
Delphi-Quellcode:
procedure TFrame1.FindComponentClick(Sender: TObject);
var I:Integer;
begin
I:=1;
TEdit(Findcomponent('edit'+inttostr(I))).text:='Text';
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#4

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:07
Hast Du einen Button namens FindComponent deklariert? Der Prozedurkopf sieht zumindest danach aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:16
Hi,

verzeih mir, wenn ich die Syntax im Folgenden falsch mache, aber wäre es nicht viel sinnvoller, wenn du diese Komponenten in einem Array verwalten würdest? Das erspart ein langsames "FindComponent", da nicht erst nach den Komponenten gesucht werden muss.

Delphi-Quellcode:
type TMyComponents = record
  MyEdit1: TEdit;
  MyEdit2: TEdit;
  MyRedioBtn: TRadioButton;
end;

var
  MyComponentsArray = array of TMyComponents;

const
  COMPONENTS_NUM = 20;

// ...

var
  i: Integer;
begin
  SetLength(MyComponentsArray, COMPONENTS_NUM);

  // Erzeugen der Komponenten
  for i := 0 to COMPONENTS_NUM - 1 do
  begin
    MyComponentsArray[i].MyEdit1 := TEdit.Create(Self);
    // ...
    MyComponentsArray[i].MyEdit2 := TEdit.Create(Self);
    // ...
    MyComponentsArray[i].MyRadioBtn := TRadioButton.Create(Self);
    // ...
  end;
end;
So gehören die 3 Komponenten auch "fest" zusammen. Das kannst du dann leicht in einer Schleife durchlaufen:

Delphi-Quellcode:
for i := 0 to COMPONENTS_NUM - 1 do
begin
  if MyComponentsArray[i].MyRadioBtn.Checked then
    MyComponentsArray[i].MyEdit1.Text := 'Inhalt';
end;
Vielleicht geht das auch gar nicht so, aber es könnte sein, dass es tut. Natürlich könnte man das auch in eine kleine Klasse packen.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#6

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:19
Aber Du hast ja auch wieder eine Schleife, wo soll jetzt der Vorteil liegen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:22
Zitat von DeddyH:
Aber Du hast ja auch wieder eine Schleife, wo soll jetzt der Vorteil liegen?
Die hast du so oder so.

Vorteile, die ich sehe sind,
- dass RadioButton und Edit nicht unbedingt den gleichen Index im Namen haben müssen
- dass weitere Radiobuttons und Edits, die nicht relevant sind, auch nicht abgefragt werden
- ich finde auch, dass man mit dem Record flexibler ist, wenn man später weitere Komponeneten zuordnen möchte
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#8

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 18:28
Wäre es dann nicht sinnvoller, sich einen Cracker/Class Helper zu schreiben, der die Objektreferenzen enthält?

[edit]Hab das gerade einmal versucht:
Delphi-Quellcode:
unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TRadioButton = class(StdCtrls.TRadioButton)
  private
    FEdit: TEdit;
  public
    property Edit: TEdit read FEdit write FEdit;
  end;

  TfrmTestMain = class(TForm)
    RadioButton1: TRadioButton;
    Edit1: TEdit;
    RadioButton2: TRadioButton;
    Edit2: TEdit;
    RadioButton3: TRadioButton;
    Edit3: TEdit;
    RadioButton4: TRadioButton;
    Edit4: TEdit;
    RadioButton5: TRadioButton;
    Edit5: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmTestMain: TfrmTestMain;

implementation

{$R *.dfm}

procedure TfrmTestMain.FormCreate(Sender: TObject);
begin
  RadioButton1.Edit := Edit1;
  RadioButton2.Edit := Edit2;
  RadioButton3.Edit := Edit3;
  RadioButton4.Edit := Edit4;
  RadioButton5.Edit := Edit5;
end;

procedure TfrmTestMain.RadioButton1Click(Sender: TObject);
begin
  if Sender is TRadioButton then
    TRadioButton(Sender).Edit.Text := 'Hallo Welt';
end;

end.
Das würde mit dynamisch erzeugten Komponenten dann genauso gehen.[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Beliebiges Edit ändern

  Alt 1. Dez 2008, 21:30
Vielen Dank! Ich hab das jetzt zwar mit einer for-Schleife gemacht, da ich mich mit arrays nicht wirklich auskenne, aber es funktioniert ja trotzdem. So weit bin ich noch nicht, dass mir der Stil, bzw. die Schnelligkeit in dem Maße wichtig ist. Aber dennoch: Danke für den Einwurf! Was würde ich bloß ohne euch tun?!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz