AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Klasse für data aware components (Data Controls)
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse für data aware components (Data Controls)

Ein Thema von dfabian · begonnen am 11. Okt 2007 · letzter Beitrag vom 11. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
dfabian

Registriert seit: 18. Jul 2007
9 Beiträge
 
#1

Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:10
Jo hallo,

ich suche eine Klasse für data aware components (TDBEdit, TDBComboBox, etc.).

Ich möchte eine Message ausgeben, sobald ein Control die DataSource ds_test besitzt.
Jemand ne Idee?

Gruß
Daniel
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:13
Hallo,

Deine Anforderung verstehe ich nicht:

Gehe ich recht in der Annahme, dass sich zur Laufzeit die DataSource-Eigenschaft Deiner datensensitiven Komponenten ändert, und Du benachrichtigt werden möchtest, sobald bei einem der Controls die Datasource auf xxx gewechselt wird?
  Mit Zitat antworten Zitat
dfabian

Registriert seit: 18. Jul 2007
9 Beiträge
 
#3

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:16
Nein, ganz einfach. Auf einer Form hab ich mehere DB Controls und per klick auf einem Button möchte ich von jedem einzelnen DBControl auf der Form den Namen seiner DataSource per showMessage ausgeben.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:42
Ohje, das konnte ich aus Deinem Eröffnungsthread nun wirklich gar nicht herauslesen

Also in dem Fall müsstest Du über sämtliche Komponenten Deiner Form iterieren und dann mittels der RTTI deren Eigenschaften abfragen.

Stichworte hier:
ComponentCount
PPropInfo
GetPropValue

Edit: Die RTTI-Methoden findet Du in der Unit 'TypInfo'.
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:50
oder, ohne RTTI, die Controls iterieren und dann
ShowMessage('Ich bin ' + Control.Datasource.Name + '! ;) ');
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 14:54
Hi,

Ich denke, per RTTI ist der bessere Weg.
Hier ein Codeschnipsel zum Probieren:

Delphi-Quellcode:
uses
  TypInfo, DB...
...
procedure TForm1.Button1Click(Sender: TObject);
Var
  i: Integer;
  AObject: TObject;
Const
  PropName = 'DataSource';

begin
  for i := 0 to ControlCount - 1 do
  begin
    if IsPublishedProp(Controls[i], PropName) then
    begin
      AObject := GetObjectProp(Controls[i], PropName);
      if Assigned(AObject) then
        Memo1.Lines.Add(Controls[i].Name + ' = ' + (AObject as TDataSource).Name)
      else
        Memo1.Lines.Add(Controls[i].Name + ' = nil');
    end;
  end;
end;
Frank
Frank Reim
  Mit Zitat antworten Zitat
dfabian

Registriert seit: 18. Jul 2007
9 Beiträge
 
#7

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 15:02
Schön, so ein Schnipsel...
Achso, danke nochmals. Wie soll ich sagen... it works!
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 15:06
Zitat von dfabian:
Schön, so ein Schnipsel...
Wenn man sie auch versteht schon. Ansonsten ist es effektiver, wenn man sich das Ganze anhand von Stichworten, die ja genannt worden sind, selber zusammensucht - so bleibt es besser im Gedächtnis
  Mit Zitat antworten Zitat
dfabian

Registriert seit: 18. Jul 2007
9 Beiträge
 
#9

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 15:10
Zitat von s-off:
Zitat von dfabian:
Schön, so ein Schnipsel...
Wenn man sie auch versteht schon. Ansonsten ist es effektiver, wenn man sich das Ganze anhand von Stichworten, die ja genannt worden sind, selber zusammensucht - so bleibt es besser im Gedächtnis
So siehts aus. Danke für den Denkanstoß.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Klasse für data aware components (Data Controls)

  Alt 11. Okt 2007, 17:44
Man kann auch ausgehend von der DataSource rückschliesen auf alle verbundenen DB aware Controls.
Diese Controls könnten ja auch auf einem anderen Formular oder Frame liegen.
Für jedes Control gibt es einen internen TDataLink.
Und das geht so:
Delphi-Quellcode:
type
   TDataSourceCracker=class(TDataSource);

procedure TForm1.Button1Click(Sender: TObject);
var
   dlist : TList;
   i : Integer;
   dlink : TDataLink;
   control : TComponent;
begin
   dlist := TDataSourceCracker(DataSource1).DataLinks;
   for i := 0 to dlist.Count-1 do
   begin
      dlink := TDataLink(dlist[i]);

      if dlink is TFieldDataLink then
      begin
         control := TFieldDataLink(dlink).Control;
         memo1.lines.add('Control: ' +control.GetNamePath+ ' Fieldname:'+TFieldDataLink(dlink).FieldName);
      end;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:37 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