AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
Thema durchsuchen
Ansicht
Themen-Optionen

dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

Offene Frage von "FriendOfDelphi"
Ein Thema von FriendOfDelphi · begonnen am 1. Jun 2010 · letzter Beitrag vom 3. Jun 2010
Antwort Antwort
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#1

dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

  Alt 1. Jun 2010, 16:55
Datenbank: dBase • Zugriff über: Topaz
Hallo Allerseits,

nachdem nun im ersten Teil geklärt wurde wie ein dBase-Datenbankzugriff grundsätzlich realiesiert wird, hier nun die Steigerung.
Die Delphi Erweiterung Topaz erlaubt die Möglichkeit mit sog. virtuellen Dateien zu arbeiten.
Dies bedeutet lediglich, dass die dBase-Datei zunächst in den Speicher geladen und dann dort verarbeitet wird.
Welche Vor- oder Nachteile dies hat, soll hier nicht Thema sein.
Ziel soll es vielmehr sein, ein vorhandenes Programm welches mit den Grafikkomponenten von Topaz implementiert wurde, so zu ändern, dass dies alles zur Laufzeit erstellt wird und ohne die Grafikkomponenten auskommt.
Hier zunächst der vorhandene Quellcode:
Delphi-Quellcode:
unit UTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ucommon, tzprimds, utzcds, utzmds, StdCtrls;

type
  TForm1 = class(TForm)
    TzVFile1: TTzVFile;
    TzVFile1NAME: TStringField;
    TzVFile1AGE: TTzFloatField;
    TzVFile1AMOUNT: TTzFloatField;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TzVFile1.Open;
  TzVFile1.Append;
  TzVFile1NAME.AsString:='Max Mustermann';
  TzVFile1AGE.AsFloat:=88.88;
  TzVFile1AMOUNT.AsInteger:=100;
  TzVFile1.Post;
  TzVFile1.WriteToDisk;
end;

end.
Das Beispielprogramm ist absichtlich einfach gehalten.
Zunächst wird die Verbindung zur dBase-Datei und ein Button auf einem Formular erzeugt.
Wenn der Button gedrückt wird, wird ein neuer Datensatz in die dBase-Datei eingefügt.
Das war es auch schon.

Die zugehörige dfm-Datei sieht so aus:
Delphi-Quellcode:
{kein Delphi-Quellcode, sondern der Inhalt der dfm-Datei}
object Form1: TForm1
  Left = 1283
  Top = 316
  Width = 398
  Height = 252
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 64
    Top = 24
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object TzVFile1: TTzVFile
    DbfFields.Strings = (
      'name, C, 30, 0'
      'age, F, 18, 8'
      'amount, N, 10, 2')
    DbfFileName = 'junk.dbf'
    HideDeletedRecs = False
    TableLanguage = tlOem
    Left = 24
    Top = 24
    object TzVFile1NAME: TStringField
      FieldName = 'NAME'
      Size = 30
    end
    object TzVFile1AGE: TTzFloatField
      FieldName = 'AGE'
      Size = 18
    end
    object TzVFile1AMOUNT: TTzFloatField
      FieldName = 'AMOUNT'
      Size = 10
    end
  end
end
Das Problem besteht nun darin, die grafische Implementierung durch eine reine Quellcode-Implementierung auszutauschen.
Bisher ist mir dies nicht gelungen und ich hoffe, dass hier im Forum jemand Erfahrung damit hat.
Im Dateianhang das Objektinspektor-Fenster von TTzVFile (Topaz-Komponente), dass Formular (Delphi 5) und die dBase-Datei.
Miniaturansicht angehängter Grafiken
objektinspektor_eigenschaften_von_ttzfile_141.jpg   form_463.jpg  
Angehängte Dateien
Dateityp: zip junk_192.zip (202 Bytes, 3x aufgerufen)
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
264 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

  Alt 3. Jun 2010, 09:51
TDataSource ist eine non-visual componente,
die der Anwender zur Laufzeit nicht sieht
und deren Aufgabe es ist TQuery mit TDBGrid zu verbinden.

Mir ist deshalb nicht klar, warum Du diese austauschen willst.
Was soll dass bringen, ausser dass Du dann diese Komponenten
selbst neu geschrieben hast.
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#3

Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

  Alt 3. Jun 2010, 11:04
Zitat von Alfredo:
TDataSource ist eine non-visual componente,
die der Anwender zur Laufzeit nicht sieht
und deren Aufgabe es ist TQuery mit TDBGrid zu verbinden.

Mir ist deshalb nicht klar, warum Du diese austauschen willst.
Was soll dass bringen, ausser dass Du dann diese Komponenten
selbst neu geschrieben hast.
Hmm - TDataSource taucht doch hier im Quellcode gar nicht auf, oder?
Ich verwende im o.g. kleinen Beispiel die Topaz-Typen "TTzVFile", "TStringField" und "TTzFloatField".
Das Ganze läuft so, dass ich bei der Programmerstellung dem Objekt "TzVFile1" (vom Typ "TTzVFile") mitteile, welche Datenbank verwendet werden soll. Daraus erkennt das Objekt, welche Felder in der dBase-Datei enthalten sind. Ich kann dann auswählen, welche ich verwenden möchte (im Beispiel alle). Daraus ergeben sich dann die "Unter"-Objekte "TzVFile1NAME" (vom Typ TStringField), "TzVFile1AGE" (vom Typ "TTzFloatField") und "TzVFile1AMOUNT" (vom Type "TTzFloatField").
Diese sind dann aber fest zugewiesen. Und das will ich ändern.
Ich möchte das Ganze über eine ini-Datei steuern, in welcher die Feldnamen stehen.
Das hat den Vorteil, dass das Programm sehr variabel ist. Ich brauche nur noch die ini-Datei zu editieren. Der Quellcode bleibt unverändert.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

  Alt 3. Jun 2010, 11:44
Hallo,

Delphi-Quellcode:
TzVFile1.Open;
TzVFile1.Append;
TzVFile1.FieldByName('NAME').AsString:='Max Mustermann';
TzVFile1.FieldByName('AGE').AsFloat:=88.88;
TzVFile1.FieldByName('AMOUNT').AsInteger:=100;
TzVFile1.Post;
TzVFile1.WriteToDisk;

TXXXField sind persistente Felder (ist hier aber kein Diskussions-Gegenstand, nur zum googlen ).


Heiko
Heiko
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
264 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2

  Alt 3. Jun 2010, 14:48
Zitat:
Aber noch bestehen grafische, feste Komponenten (TTzDbf, TDataSource). Diese müssen noch durch Quellcode ersetzt werden.
Siehe Teil 1 #38


Ich würde die Auswahl der Felder im Grid lösen.

Beim Start des Formulars die Felder die man nicht will ausblenden.

DBGRid1.Columns.Items[1].Visible := False;
  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 17:55 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