Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   DB-Controls DataField über RTTI zuweisen (https://www.delphipraxis.net/188140-db-controls-datafield-ueber-rtti-zuweisen.html)

Rainer Wolff 3. Feb 2016 15:03

Delphi-Version: XE

DB-Controls DataField über RTTI zuweisen
 
krieg ich einfach nicht hin.

Ich will verschiedene DB-Controls (DBEdit, DBCheckbox...) auf einem Formular dynamisch über RTTI konfigurieren. Dazu frage suche ich meine Komponente über den Namen, frage, ob die Komponente eine Property mit dem Namen DataField hat und will anschliessend den Wert des Datafields über RTTI setzen (Ebenso dann DataSource).
Im Testprojekt kann ich width oder Hint setzen, aber eben nicht DataField. DataField direkt zuweisen geht aber wieder.

Code:
procedure TForm10.Button1Click(Sender: TObject);
var
  context: trtticontext;
  aType: TRttiType;
  aproperty: Trttiproperty;
  aValue: TValue;
begin
  aType := context.GetType(TDBEdit);
  for aproperty in aType.GetProperties do
  begin
    if aproperty.name = 'Width' then
    begin
      aproperty.SetValue(DBEdit2, TValue.From(250)); //geht
    end;
    if aproperty.name = 'DataField' then
    begin
      aproperty.SetValue(DBEdit2, TValue.From('ARTIKEL')); // Datafield zuweisen geht nicht
    end;
    if aproperty.name = 'Hint' then
    begin
      aproperty.SetValue(DBEdit2, TValue.From('Artikel')); // Hint zuweisen geht
    end;
  end;
end;

procedure TForm10.Button2Click(Sender: TObject);
begin
  DBEdit2.DataField:='Artikel'; //String direkt zuweisen funktioniert
end;

Rainer Wolff 3. Feb 2016 15:11

AW: DB-Controls DataField über RTTI zuweisen
 
Ich glaube, einen Teil des Problems hab ich schon selbst gelöst. Datafield ist kein Feld des Controls, sondern greift intern auf ein Datalink zu.

Aber wenn trotzdem jemand grad weiss, wie ich verschiedene DB-Controls dynamisch konfigurieren kann, immer her damit

mkinzler 3. Feb 2016 16:08

AW: DB-Controls DataField über RTTI zuweisen
 
Schau Dir mal Stevie's Prototyp an


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