Autor Beitrag
CreepX
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 12.06.07 17:41 
Wie kann ich mit hilfe einer Listbox eine bestimmte Sache auswählen und dann diese mit hilfe eines Buttons ausführen?

MfG CreepX
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Di 12.06.07 17:44 
Was verstehst du unter einer "bestimmten sache"?

_________________
erare humanum est
CreepX Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 12.06.07 17:46 
ich will mit der Listbox zwischen Proceduren wählen die etwas berechnen.
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Di 12.06.07 17:49 
ItemIndex gibt dir die Nummer (Index) des ausgewählten Items zurück.
Im Button musst du dann mit if-Anweisungen abfragen welches Item ausgewählt ist und die passende Procedure aufrufen.
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Di 12.06.07 17:52 
Du kannst auch der .Objects eigenschaft der Items die Prozedurenpointer zuweisen .... das ist eleganter

_________________
erare humanum est
CreepX Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 12.06.07 17:55 
Kannst du vielleicht mal nen quelltext dazu angeben hab kein plan was du meinst.
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Di 12.06.07 18:47 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
unit Unit1;

interface

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

type
  TMyProcedure = Procedure;

  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  Procedure Bla;
  procedure BlaBla;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Procedure Bla;
begin
  Showmessage('Bla');
end;
procedure BlaBla;
begin
  Showmessage('BlaBla');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Listbox1.Items.AddObject('Bla', @Bla);
  Listbox1.Items.AddObject('BlaBla', @BlaBla);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  TMyProcedure(ListBox1.Items.Objects[Listbox1.ItemIndex]);
end;

end.



So in etwa :)

gruss

_________________
erare humanum est
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 12.06.07 19:00 
Ich denke für dich kommt eher folgendes in Frage:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
begin
  case listbox1.ItemIndex of
      0: begin
            ShowMessage('Berechnung 1');
         end;
      1: begin
            ShowMessage('Berechnung 2');
         end;
      2: begin
            ShowMessage('Berechnung 3');
         end;
  end;
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Di 12.06.07 19:05 
user profile iconTilman hat folgendes geschrieben:
Ich denke für dich kommt eher folgendes in Frage:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
begin
  case listbox1.ItemIndex of
      0: begin
            ShowMessage('Berechnung 1');
         end;
      1: begin
            ShowMessage('Berechnung 2');
         end;
      2: begin
            ShowMessage('Berechnung 3');
         end;
  end;
end;



das ist das gleiche, nur in unflexibel und lang :mahn: :gruebel:

_________________
erare humanum est
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 12.06.07 19:21 
user profile iconRobinator hat folgendes geschrieben:

das ist das gleiche, nur in unflexibel und lang :mahn: :gruebel:


Kann deine kritik net ganz nachvollziehen... mein Code macht etwas anderes als deiner, und zwar so wie ich die Frage des Threaderstellers verstanden habe... davon abgesehen finde ich meinen Code auch für Anfänger leichter verständlch als deinen... aber ich sage ja net dass deiner falsch ist, ist er ja auch nicht, auch wenn er sich m.E. noch ganz hübsch verkürzen ließe:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure bla;
begin
  ShowMessage('Bla');
end;
procedure blabla;
begin
  ShowMessage('Blabla');
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  case listbox1.ItemIndex of
    0:  bla;
    1:  blabla;
  end;
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Di 12.06.07 19:26 
Eben diese Case unterscheidung macht deinen code unflexibel, es war ja nie die Rede von nur 2 oder 3 einträgen, wenn man nun 50 hat, dann wirds mit der code extrem lang und unschön. Der Vorteil meiner Lösung ist halt, dass die Items "selber entscheiden" welche procedure die passende ist ;)

Ich wollte dich auch garnicht kritisieren, du hast schon recht, für einen Anfänger ist deine Lösung wohl in der Tat leichter verständlich.

Da wir nun beide unseren Standpunkt dargelegt haben, können wir es ja einfach dem Threadersteller überlassen sich für eine davon zu entscheiden ;)

nichts für ungut, und nen schönen abend noch ;)

_________________
erare humanum est
CreepX Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 12.06.07 19:29 
Danke für eure hilfe ich hab das Problem jetzt geschnallt.
Da Hätte ich ja auch einfacher drauf kommen können!
Wenn man eben zu kompliziert denkt kommt man eben nicht drauf.
Naja Danke noch mal.

MfG CreepX
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 12.06.07 19:33 
user profile iconRobinator hat folgendes geschrieben:

nichts für ungut, und nen schönen abend noch ;)

ja, dir auch :)

user profile iconCreepX hat folgendes geschrieben:
D
anke für eure hilfe ich hab das Problem jetzt geschnallt.

np, dafür sind wir ja da :wink:

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)