Einzelnen Beitrag anzeigen

I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#8

Re: Beliebig viele Editfelder anzeigen

  Alt 14. Feb 2009, 14:10
Hallo,

hab beim Stöbern diesen Beitrag entdeckt und deshalb mal die folgende Prozedur entwickelt:

Delphi-Quellcode:
procedure Tdbmain.CreateMask;
var FieldNum: Integer; Field: TStrings; FieldName: String; TopPos,LeftPos: Integer;
begin
  TopPOs := 5; LeftPos := 40;
  Field := TStrings.Create;
  dbf.Fields.GetFieldNames(Field);
  for Fieldnum := 0 to dbf.Fields.Count-1 do
  begin
    FEdit := TLabeledEdit.Create(Self);
    FEdits.AddObject(Field[Fieldnum], FEdit);
  end;
  for Fieldnum := 0 to dbf.Fields.Count-1 do
  begin
    FieldName := LowerCase(Field[FieldNum]);
    FieldName[1] := Upcase(FieldName[1]);
    FCtrl := FEdits.Objects[FieldNum];
    FEdit := TLabeledEdit(FCtrl);
    FEdit.Parent := DBScroll;
    FEdit.Left := 40;
    FEdit.Top := TopPos;
    FEdit.Show;
    Inc(TopPos, FEdit.Height + 5);
  end;
  Field.Free;
end;
Da ich unter Lazarus die TDbf Komponente verwende, habe ich statt TObjectlist eine normale Stringlste verwendet.

Nun frag ich mal, wie ordnet die IDE bei datensensitiven Komponenten die Felnamen zu.

Wenn ich diesen Mechnismus für eine Eingabemaske einer Datenbank verwenden will, muss ja diese Maske, abhängi von der Anzahl der Felder in der Datenbank unterschiedlich viele Eingabefelder haben,. Der Einfachheit halber will ich erst mal nur Editfelder (TDBEdit) verwenden, zusammen mit TDBText wegen dem Eingabeprompt.

Wie ordnet TDatasource dem Eingabefeld das richtige Datenbankfeld zu?

Inzwischen werde ich weiter experimentieren. Vielleicht genügt es ja, einfach Feldanzahl Editfelder in die Liste einzufügen und nach obiger Prozedur zur Anzeige zu bringen, während TDataSource sich um die richtige Feldzuordnung kümmert. Wenn das klappt, wieso klappt das?

Das ich TDbf verwende liegt an der Art meiner Datenbank, die im Umfang klein genug ist, um keine umfangreiche Datenbankmaschine zu benötigen.
  Mit Zitat antworten Zitat