Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionen aus ListBox auslesen (https://www.delphipraxis.net/79666-funktionen-aus-listbox-auslesen.html)

Mb123 26. Okt 2006 09:55


Funktionen aus ListBox auslesen
 
Morgen,

http://www.michael-beering.com/delphi2.JPG

Ich habe folgendes Problem: Ich möchte wie oben in dem Programm die Funktionsbeschreibung mti dem Term zusammensetzen und unter Funktionen anzeigen lassen. Nun zu der eigentlichen Frage: ich weiß nicht genau was für eine box ich zum anzeigen der funktionen nehmen soll, denn am ende sollte man zwischen den einzelnen funktionen auch noch wechseln können, um so z.b. verschiedene wertetaffeln anzeigen zu können. außerdem wär es gut wenn man innerhalb der box eine funktion löschen könnte (für diesen fall würden memo und listbox ja schon wegfallen). Es wär klasse wenn mir da jemand einen rat geben könnte. Danke

Luckie 26. Okt 2006 10:04

Re: Welche Funktionen ?
 
Wieso würde eine Listbox wegfallen?

Mb123 26. Okt 2006 10:24

Re: Welche Funktionen ?
 
http://michael-beering.com/delphi21.JPG

okay da hab ich mich wohl iwie vertan, sorry.. listbox funktioniert super ! aber ne andere frage: wie kann ich jetzt aus der listbox die einzelnen funktionen ansprechen ? ist es da nicht am besten vorher die terme zu speichern ? weil sonst muss ich ja die strings aus der listbox erst wieder zerlegen oder ? :? Ich will also durch doppelklick auf die Gleichung diese dann verwenden.

Union 26. Okt 2006 10:33

Re: Welche Funktionen ?
 
Du kannst wenn Du AddObject anstelle von AddString verwendest einen Pointer auf ein Objekt oder sonstwas in die Listbox mit einfügen. Dann rufst Du die enstprechende Prozedur auf.

Mb123 26. Okt 2006 10:45

Re: Welche Funktionen ?
 
hättest du da ein beispeil ? weil hab noch nicht mit addobject und pointer gearbeitet :?

Union 26. Okt 2006 11:20

Re: Welche Funktionen ?
 
Nicht schön, aber soll ja auch nur das Prinzip zeigen:
Delphi-Quellcode:
type
  TCustomFunktion = class
  public
     Parameter : extended;
     function execute : extended; virtual; abstract;
  end;

  TFunktion1 = class(TCustomFunktion)
  public
     function execute : extended; override;
  end;

  TFunktion2 = class(TCustomFunktion)
  public
     function execute : extended; override;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Funktion1, Funktion2 : TCustomFunktion;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Funktion1 := TFunktion1.Create;
   Funktion2 := TFunktion2.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ListBox1.Items.AddObject('Funktion1', Funktion1);
   ListBox1.Items.AddObject('Funktion2', Funktion2);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   x : extended;
begin
   if Listbox1.ItemIndex = -1 then exit;

   TCustomFunktion(ListBox1.Items.Objects[Listbox1.ItemIndex]).Parameter := 3;
   x := TCustomFunktion(ListBox1.Items.Objects[Listbox1.ItemIndex]).Execute;
   Showmessage(Format('Ergebnis %n', [x]));
end;

{ TFunktion1 }

function TFunktion1.execute: extended;
begin
   result := Parameter * 7;
end;

{ TFunktion2 }

function TFunktion2.execute: extended;
begin
   result := Parameter * 3
end;

Luckie 26. Okt 2006 11:51

Re: Welche Funktionen ?
 
Gib deinem Thread bitte noch einen aussagekräftigen Titel, in dem du deinen ersten Beitrag entsprechend editierst. Danke.

Mb123 26. Okt 2006 18:03

Re: Funktionen aus ListBox auslesen
 
habs jetzt doch anders gemacht.. ich les die werte die in der listbox stehen einfach aus und setze sie dann wieder in die edit felder ein & arbeite dann von dort aus mit ihnen weiter. aber tortzdem danke für deinen vorschlag ! Hier der Code:
Delphi-Quellcode:
procedure TMemo1.ListBox1Click(Sender: TObject);
var s,SubStr,SubStr2:string;
begin

s := listbox1.items[listbox1.itemindex];

SubStr := Copy(s,Pos('=',s)+1,25);
edit2.Text:= SubStr;

SubStr2 := Copy(s,0,Pos('=',s)-1);
edit1.Text:= SubStr2;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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