AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi InitFieldDefs aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

InitFieldDefs aufrufen

Offene Frage von "zsoca"
Ein Thema von zsoca · begonnen am 15. Jul 2007 · letzter Beitrag vom 16. Jul 2007
Antwort Antwort
zsoca

Registriert seit: 15. Jul 2007
Ort: Ungarn
2 Beiträge
 
#1

InitFieldDefs aufrufen

  Alt 15. Jul 2007, 19:49
Datenbank: Allgemein • Version: Allgemein • Zugriff über: Allgemein
Hallo!

Ich entwickele ein eigenes TDataset. Ich muß die Felderbeschreibung laden (über InternalInitFieldDefs), und im Field Editor die Felder erzeugen. Mein Problem ist, daß InternalInitFieldDefs wird NUR EINMAL gerufen in einer Edit-session. Falls die Felder werden verändert, ich muß alles schließen, und das Projekt neu öffnen.
Wie kann signalisieren dem IDE, daß die Felder neu geladen werden muß?

Ich habe schon die folgende versucht: (hilf nichts )

Delphi-Quellcode:
procedure TMyTestDataSet.SetServerDataSet(SDSet: String);
begin
  ServerDataSet:= SDSet;
  FieldDefs.Updated := False;
  self.FFieldLayout := '';
  self.FFieldData.Clear;
  self.DefChanged(Self);
  FieldDefList.Clear;
  FieldDefs.Clear;
end;
Grüße, Zsoca
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: InitFieldDefs aufrufen

  Alt 16. Jul 2007, 16:04
Hi und erstmal Herzlich Willkommen in der DP

Wie genau werden denn die Felder geändert? Verwendest Du hier ein Property? Wenn ja, dann kannst Du einfach eine Methode als Setter verwenden, diese wird aufgerufen, sobald die Felder verändert werden. Dabei kannst Du dann einfach die InitialInitDefs-Methode aufrufen:

Delphi-Quellcode:
TMyTestDataSet = class(TDataset)
  private
    FFields: TStrings;
  protected
    procedure setFields(const Fields: TStrings);
  public
    property Fields: TStrings read FFields write setFields;
end;

...

procedure TMyTestData.setFields;
begin
  self.FFields.Assign(Fields);
  self.InitialInitDefs;
  ...
end;
Muss jetzt nicht stimmen, was Signaturen/Typen usw. angeht, aber grob was in der Richtung halt.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
zsoca

Registriert seit: 15. Jul 2007
Ort: Ungarn
2 Beiträge
 
#3

Re: InitFieldDefs aufrufen

  Alt 16. Jul 2007, 23:54
Hallo!

Das problem ist, daß Funktion was du vorgeschlagen hast, wird leider NIE vom Fields Editor aufgerufen...
Alles was Fields Editor manipuliert ist DataSet.FieldDefs!

Delphi-Quellcode:
// auszug aus dem TFieldsEditor
function TFieldsEditor.DoAddFields(All: Boolean): TField;
var
  AddFields: TAddFields;
  I: Integer;
  FieldName: string;
  Field: TField;
begin
  CheckFieldAdd;
  Result := nil;
  try
    DSDesigner.BeginUpdateFieldDefs;
    DataSet.FieldDefs.Update;
  finally
    DSDesigner.EndUpdateFieldDefs;
  end;
  AddFields := TAddFields.Create(Application);
  try
    { Add physical fields not already represented by TField components to the
      to the list of available fields }

    for I := 0 to DataSet.FieldDefList.Count - 1 do
      with Dataset.FieldDefList[I] do
        if (FieldClass <> nil) and not (faHiddenCol in Attributes) then
        begin
          FieldName := DataSet.FieldDefList.Strings[I];
          Field := DataSet.FindField(FieldName);
          if (Field = nil) or (Field.Owner <> Dataset.Owner) then
            AddFields.FieldsList.Items.Add(FieldName);
        end;

    { Show the dialog }
    AddFields.SelectAll;
    AddFields.FieldsList.ItemIndex := 0;
{$IFDEF MSWINDOWS}
    if All or (AddFields.ShowModal <> mrCancel) then
      Result := CreateFields(AddFields.FieldsList);
{$ENDIF}
  finally
    AddFields.Release;
  end;
end;
Grüße, Zsoca
  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 00:20 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