Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MysqlTable Eigenschaften mit String ansprechen? (https://www.delphipraxis.net/170108-mysqltable-eigenschaften-mit-string-ansprechen.html)

Loewen Zahn 31. Aug 2012 09:42

Datenbank: MySQL • Version: 5.5.24 • Zugriff über: Local

MysqlTable Eigenschaften mit String ansprechen?
 
Hallo,

ich bin relativ neu hier und programmiere auch erst seit kurzem mit Delphi. Vorab kann ich mir gut vorstellen das es bereits Diskussionen und Lösungsansätze zu meinem Problem gibt, jedoch habe ich wirklich nichts finden können, was noch an meinem mangelndem Verständnis/Definitionsbeschreibungen liegt.

Ich Übergebe von einem TButton, den Wert der Eigenschaft Hint (die etwas ungeschickt gewählt ist).
Dieser Wert soll z.b. 'Next' sein sodass ich ihn bei der Tabelle.next verwenden kann.

..
Pabspielen((Sender as Tbutton).hint);
..

procedure TF_MeMP.Pabspielen(SPos:String);
begin
dm_MeMP.tb_MeMP.SPos;
end;

tb_MeMP ist dabei die MYSQLTable die mit .Next .First etc ansprechen möchte. Das Problem ist natürlich das ich einen String nicht als Erweiterung für den Befehl nutzen kann, da Delphi versucht die Eigenschaft SPos zu finden. Natürlich könnte ich auch einfach nur next in die Procedure schreiben, jedoch wäre dies nicht wirklich variable.

Wie könnte ich also den 'Eigenschaftsnamen' in einem String, bei meiner Tabelle verwenden?

Danke für jegliche Interesse und Hilfe.

mfg
LoewenZahn

p80286 31. Aug 2012 10:05

AW: MysqlTable Eigenschaften mit String ansprechen?
 
Willkommen in der DP.

Nur habe ich ein Problem mit dem Verständnis Deiner Frage.
Du hast einen Button, mit dem Du durch eine Datenbanktabelle navigieren (prev,next) willst.
Ist das so richtig?

Gruß
K-H

Loewen Zahn 31. Aug 2012 10:16

AW: MysqlTable Eigenschaften mit String ansprechen?
 
Zitat:

Zitat von p80286 (Beitrag 1180826)
Willkommen in der DP.

Du hast einen Button, mit dem Du durch eine Datenbanktabelle navigieren (prev,next) willst.

Vielen Dank und ja so in etwa.

Ich besitze unzählige Buttons die jeweils eine andere Funktion besitzen. So z.B.: .prior .next .last .first dazu wäre auch ein Navigator geeignet, jedoch kommt in der Procedure auch noch einiges anderes uninteressantes hinzu.

Ich möchte aber aus Interesse und Wissensdrang es so schmal programmieren das jeder Button die gleiche Procedure benutzt.

Zur Vereinfachung, 5 Knöpfe rufen alle den gleichen folgenden Ablauf auf. Aufgrund ihrer unterschiedlichen Hints oder Tags möchte ich einen Funktionsaufruf variable gestalten.

procedure Form1.btn_weiterClick(Sender: TObject);
begin
tb_MeineTabelle.next;
//will ich in etwas so aufrufen wie wenn der hint='next':
tb_MeineTabelle.(Sender as Tbutton).hint);
end;

mfg

shmia 31. Aug 2012 12:18

AW: MysqlTable Eigenschaften mit String ansprechen?
 
Dein Ansatz scheint mir etwas "seltsam" zu sein.
Hast du dich schon mal mit Actions und ActionLists beschäftigt?

Du könntest eine ActionList mit jeder Menge Actions anlegen.
Jede Action tut etwas ganz Bestimmtes wie z.B. einen Datensatz löschen oder zum letzten Datensatz springen.
Du kannst diese Actions deinen Buttons frei zuweisen.
Diese Verknüpfungen zwischen den Buttons und den Actions kann man auch in einer Ini-Datei speichern so dass der Benutzer selbst definieren kann welche Actions er sehen möchte und welche nicht.

Ist es das was du tun möchtest?

nahpets 31. Aug 2012 13:55

AW: MysqlTable Eigenschaften mit String ansprechen?
 
Hallo,

das was Du da machen möchtest geht so nicht.

Alternativvorschlag:

Nutze nicht Hint sondern TAG. Jeder Button bekommt dort einen eigenen Wert.

Damit könntest Du eine Prozedur schreiben, die von allen Buttons aufgerufen wird und zwar in der Form:
Delphi-Quellcode:
begin
  ...
  case (Sender as tButton).Tag of
    1 : tb_MeineTabelle.next;
    2 : tb_MeineTabelle.first;
  ...
  else
    ShowMessage('Nanana, da fehlt noch die Abfrage eines Wertes.');
  end;
  ...
end;
Du wirst nicht daran vorbeikommen, für jede Aktion, die durch einen Buttun ausgelöst werden soll, den entsprechenden Quelltext zu schreiben.
[OT]
Früher, bei dBase IV konnte man das, was Du vorhast, aber noch machen. Wenn man vor eine Variabel ein & schrieb, so wurde der Inhalt der Variabel als Teil eines Befehles interpretiert. Aber die Zeiten sind (leider) vorbei ;-)[/OT]

Alternativ könntest Du natürlich auch in einer IF-Kascade alle Hintwerte abfragen und die entsprechenden Befehle implementieren. Mir erscheint die Nutzung des TAG-Wertes aber einfacher.

Actions und Actionlist solltest Du die aber unbedingt anschauen, sie helfen, Aktionen zentraler zu verwalten und sie ggls. nicht nur Buttons zuzuweisen, sondern gleichzeitg auch Menüs. Und sie haben den Vorteil, dass Du dort auch Shortcuts vergeben kannst.


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