[Gelöst] Wie kann ich eine Listbox mit vorhandenen Indexen einer TDBF befüllen?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
lazfan
Beiträge: 2
Registriert: Sa 16. Dez 2023, 18:01

[Gelöst] Wie kann ich eine Listbox mit vorhandenen Indexen einer TDBF befüllen?

Beitrag von lazfan »

Zum Einsatz kommt ein Almalinux 9 (Mate Desktop) mit einer installierten Lazarus Version 2.2.6.

Ich habe hier noch eine alte dBASE IV Datei namens adressen.dbf mit einer Indexdatei adressen.mdx. In der adressen.mdx gibt es den Index name und vorname. Habe mir ein GUI erstellt mit TDBF und Datasource sowie DBGrid als Tabelle. dBase Dateien können mit openDialog erfolgreich geladen werden. Hab nun eine ListBox eingebaut, die nach dem öffnen der adressen.dbf automatisch die vorhandenen Indexe name und vorname in der ListBox eingelesen werden. Komme leider nicht weiter. Mein bisheriger Code:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);

  var I: Integer;

begin

      if OpenDialog1.Execute then

  begin

    Dbf1.Close;  //Falls noch eine Datenbank geöffnet war

    DBGrid1.DataSource := (nil);

    DBMemo1.DataSource := (nil);

    DBMemo1.DataField := '';

    Dbf1.TableName:=OpenDialog1.FileName;

    DBGrid1.DataSource := Form1.DataSource1 ;

    DBMemo1.DataSource := Form1.DataSource1;

    Dbf1.Active:=true;

 ListBox2.Clear;

// ListBox2.Items.Add('name');

// ListBox2.Items.Add('vorname');

  for I:=Listbox2.Items.Count-1 downto 0 do

  begin

// An dieser Stelle komme ich nicht weiter.

   Listbox2.Items.Add(Form1.Dbf1.??????)

 end;
 
Kann mir jemand helfen?

lazfan
Zuletzt geändert von lazfan am So 17. Dez 2023, 16:01, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie kann ich eine Listbox mit vorhandenen Indexen einer TDBF befüllen?

Beitrag von wp_xyz »

In MyDbfStudio (https://github.com/wp-xyz/MyDBFStudio) ist es so gemacht:

Code: Alles auswählen

procedure TDbfTable.Load_Table_Indexes;
var 
  ind: Integer;
begin
  Indexes.Clear;
  Indexes.Items.Add('');
  for ind := 0 To DBTable.Indexes.Count - 1 do
    Indexes.Items.Add(DBTable.Indexes.Items[ind].Name);
end;
"Indexes" ist dabei die Combobox, und "DBTable" die TDBF-Komponente.

lazfan
Beiträge: 2
Registriert: Sa 16. Dez 2023, 18:01

Re: Wie kann ich eine Listbox mit vorhandenen Indexen einer TDBF befüllen?

Beitrag von lazfan »

Hallo wp_xyz,

das hat einwandfrei funktioniert, danke dafür.

lazfan

Antworten