AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DBLookupcombobox bei auswahl Actionlist / Action ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

DBLookupcombobox bei auswahl Actionlist / Action ausführen

Ein Thema von klaus9 · begonnen am 24. Jan 2012 · letzter Beitrag vom 25. Jan 2012
Antwort Antwort
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#1

DBLookupcombobox bei auswahl Actionlist / Action ausführen

  Alt 24. Jan 2012, 13:26
Datenbank: mybase • Version: 1 • Zugriff über: delphi
Hallo,

habe ein kleines Problem..

Ich habe eine DBLookupCombobox und würde gerne bei Auswahl aus der DBLookupcombo eine Action aus einer Actionlist ausführen. Bei normalen Comboboxen habe ich es hinbekommen, folgendermaßen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.AddObject('>Bitte wählen', TObject(0));
ComboBox1.ItemIndex := 0;
ComboBox1.Items.AddObject('test1', TObject(1111));
ComboBox1.Items.AddObject('test2', TObject(2222));
ComboBox1.Items.AddObject('test3', TObject(3333));
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);

 begin
if
    Assigned( ComboBox1.Items.Objects[ ComboBox1.ItemIndex ] ) and
    ( ComboBox1.Items.Objects[ ComboBox1.ItemIndex ] is TAction )
  then
    TAction( ComboBox1.Items.Objects[ ComboBox1.ItemIndex ] ).Execute;

end;

Wie funktioniert der Code bei einer DBLookupCombobox hin zu sagen, er soll mir den Wert der Tabelle Spalete
"ID" anzeigen und wenn ID xy ausgewählt wird soll er eine Action ausführen z.B. bei ID 1 = Action1 usw. das würde mir schon sehr viel weiterhelfen.

Für jeden Tipp bin ich sehr dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBLookupcombobox bei auswahl Actionlist / Action ausführen

  Alt 24. Jan 2012, 14:34
Bei einer DBLookupComboBox arbeitest du nicht mit den Properties der Komponente, sondern wertest das zugrundeliegende DataSet aus. Letztlich hast du wahrscheinlich eine ID und einen angezeigten Wert in deinem DataSet. Ob du jetzt auf die ID oder den Wert reagierst, bleibt dir überlassen, ich verwende im Allgemeinen die ID für die weitere Verarbeitung.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#3

AW: DBLookupcombobox bei auswahl Actionlist / Action ausführen

  Alt 24. Jan 2012, 18:04
Ja hab ich mir auch so gedacht.

habe eine DBLookupcombobox und ein dbedit.text feld und diese verbunden und bei auswahl gibt mir
die DBLookup an das DBedit dieses ID feld rüber und im dbedit.feld habe ich als code hinterlegt

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, DB, DBClient, StdCtrls, Mask, AppEvnts, ActnList;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    DBLookupComboBox1: TDBLookupComboBox;
    DBEdit1: TDBEdit;
    ActionList1: TActionList;
    Action1: TAction;
    Edit1: TEdit;
    procedure Action1Execute(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure DBEdit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Action1Execute(Sender: TObject);
begin

showmessage('test');
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Edit1. Text = '1') then
showmessage('test');

if (Edit1. Text = '2') then
showmessage('test')
end;

procedure TForm1.DBEdit1Change(Sender: TObject);
begin
//if (DBEdit1.Text = '1111') then
//showmessage('test');

if (DBEdit1.Text = '1111') then
Action1.execute else
showmessage('nichts');
end;


procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
soweit so gut, nur jetzt kommt beim ausführen ein richtiges ergebnis, aber dann im anschluss eine Fehlermeldung.

Zugriffsverletzung bei adresse 004849B3


und dann mal eine andere frage, wenn ich in einem edit text feld eine Spalte aus einer Datenbank einlesen möchte wie mache ich das, z.B. spalte 1 zeile 1 anzeigen lassen möchte..wie funktioniert das


das geht
edit1.text := datasource1.dataset.fieldsvalue['name'];
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DBLookupcombobox bei auswahl Actionlist / Action ausführen

  Alt 24. Jan 2012, 19:33
Du frickelst wieder mit den Properties der Komponenten herum. Hinter den DB-Komponenten verbirgt sich immer ein DataSet, sei es eine Query oder ein Table. Bei Zugriff auf Datenbanken arbeitest du immer nur mit dem DataSet, die DB-Komponenten dienen nur der Darstellung.

In deinem Fall wäre das wahrscheinlich eher so:
statt
Delphi-Quellcode:
if (DBEdit1.Text = '1111') then
 Action1.execute else
 showmessage('nichts');
in der Methode DBEdit1.Change sollte es etwa so ausehen...

Delphi-Quellcode:
if ClientDataSet1.FindField('Test').AsString = '1111then
  Action1.Execute
else
  ShowMessage('nichts');
Warum DBEdit wenn du bereits eine DBLookupComboBox einsetzt?

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#5

AW: DBLookupcombobox bei auswahl Actionlist / Action ausführen

  Alt 25. Jan 2012, 15:33
dankeschön klappt so

Gruß
Klaus
  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 12:54 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