![]() |
Datenbank: dBase • Zugriff über: Topaz
dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
Liste der Anhänge anzeigen (Anzahl: 3)
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 ![]() 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:
Das Beispielprogramm ist absichtlich einfach gehalten.
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. 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:
Das Problem besteht nun darin, die grafische Implementierung durch eine reine Quellcode-Implementierung auszutauschen.
{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 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. |
Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
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. |
Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
Zitat:
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. |
Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
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 |
Re: dBase-Datenbanken mit Topaz-Erweiterung - Teil 2
Zitat:
Ich würde die Auswahl der Felder im Grid lösen. Beim Start des Formulars die Felder die man nicht will ausblenden.
Delphi-Quellcode:
DBGRid1.Columns.Items[1].Visible := False;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz