Also ich möchte mit einer Funktion ein Fenster Aufrufen. Das Fenster hat ein DBGrid drauf und mit onEnter wird ein Wert wieder zurückgegeben.
So habe ich mir das vorgestellt. Nur irgendwie komme ich da nicht so recht weiter.
Also wie ist der Plan?
Aufruf:
Code: Alles auswählen
procedure TfrmMain.MenuItem1Click(Sender: TObject);
begin
sListe('dbArtikel', 'Artikelname');
end;
Code: Alles auswählen
Function sListe(cTable, cAnz: String):String;
begin
frmListe.cFeldueber := cAnz;
frmListe.cTableGL := cTable;
Liste.frmListe.Show;
sListe := cFeldRueck;
end;
Code: Alles auswählen
unit Liste;
{$mode objfpc}{$H+}
interface
uses
Classes,
SysUtils,
FileUtil,
Forms,
Controls,
Graphics,
Dialogs,
DBGrids,
ZDataset,
db;
type
{ TfrmListe }
TfrmListe = class(TForm)
DS_Liste: TDataSource;
DBGrid1: TDBGrid;
zListe: TZQuery;
procedure DBGrid1Enter(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
cFeldueber : String;
cTableGL : String;
cListeRueck : String;
end;
var
frmListe: TfrmListe;
implementation
{$R *.lfm}
{ TfrmListe }
procedure TfrmListe.FormCreate(Sender: TObject);
var
Colum: TColumn;
begin
end;
procedure TfrmListe.FormClick(Sender: TObject);
begin
frmListe.cListeRueck := DS_Liste.DataSet.FieldByName('ID').Text;
Close;
end;
procedure TfrmListe.DBGrid1Enter(Sender: TObject);
begin
frmListe.cListeRueck := DS_Liste.DataSet.FieldByName('ID').Text;
Close;
end;
procedure TfrmListe.FormShow(Sender: TObject);
begin
If (frmListe.cFeldueber <> '') then begin
zListe.SQL.Text := 'SELECT ID, '+frmListe.cFeldueber+' FROM '+frmListe.cTableGL;
zListe.Active := True;
DBGrid1.Columns.Items[0].FieldName := frmListe.cFeldueber;
DBGrid1.Columns.Items[0].Title.Caption := frmListe.cFeldueber;
DBGrid1.Columns.Items[0].Width := 170;
DBGrid1.Refresh;
end;
end;
end.
Nun wo ist mein Problem?
A habe ich nun so viel rumprobiert und komme irgendwie nicht weiter (knoten in kopf oder so)
B die Globen Variablen stören mich
Kann sich das gewuschel mal jemand ansehen und mir sagen wie nach seiner Ansicht der beste Weg wäre?
Viele Grüße