![]() |
Datenbank: CDS • Version: Delphi 10.3 • Zugriff über: MidasLib
Beispiel Projekt gesucht, Midaslib/ClientDataSet
Guten Tag liebe Gemeinde, ich bin auf der Suche nach einem kompletten Beispiel Projekt was die Unit Midaslib verwendet und per ClientDataSet arbeitet.
Meine Erfahrung damit ist gleich null. Sinn und Zweck soll es sein davon zu lernen wie man es verwendet. (simples 2 Felder Grid) Was ich in Erfahrung bringen konnte brauche ich unter Verwendung der unit Midaslib in Verbindung mit einem ClientDataSet keine weiteren dll Dateien, das ist genau das was ich möchte. ...in der Hoffnung das die Navigator Komponente keinen weiteren Quelltext zum funktionieren braucht... (Datensatz anlegen, editieren, löschen etc...) Wenn jemand die Zeit hat mir ein Projekt zu teilen, da ich weder bei Embarcadero, Delphi-Praxis noch per Google fündig geworden bin, wäre ich sehr glücklich :) |
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Mal so auf die Schnelle einfach zusammengeklickt. Das ClientDataSet enthält die Daten bereits persistent in der DFM; daher ist keine externe Tabelle oder ein Provider notwendig.
Das MidasLib in der uses-Anweisung erlaubt es, ohne die externe Midas.dll auszukommen. |
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Liste der Anhänge anzeigen (Anzahl: 1)
Da gibt es wirklich nicht soo viel im Netz, aber ich kann das Buch 'Delphi in Depth: ClientDataSets' von 'Cary Jensen' sehr empfehlen. Es ist das beste, was ich über ClientDataSets gefunden habe. Für den Anfang habe ich kleines Beispiel zusammengeklickt.
Delphi-Quellcode:
object MainForm: TMainForm
Left = 0 Top = 0 Caption = 'Demo for TClientDataSet' ClientHeight = 251 ClientWidth = 512 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 319 Top = 10 Width = 182 Height = 13 ParentCustomHint = False Caption = 'Datensatz anlegen, editieren, l'#246'schen' ParentShowHint = False ShowHint = False end object Label2: TLabel Left = 324 Top = 32 Width = 50 Height = 13 ParentCustomHint = False AutoSize = False Caption = 'Textfeld' ParentShowHint = False ShowHint = False Layout = tlCenter end object Label3: TLabel Left = 324 Top = 59 Width = 50 Height = 13 ParentCustomHint = False AutoSize = False Caption = 'Nummer' ParentShowHint = False ShowHint = False Layout = tlCenter end object DBGrid1: TDBGrid Left = 8 Top = 8 Width = 297 Height = 185 ParentCustomHint = False DataSource = DataSource1 Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgTitleClick, dgTitleHotTrack] ParentShowHint = False ShowHint = False TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] end object DBNavigator1: TDBNavigator Left = 8 Top = 199 Width = 296 Height = 25 ParentCustomHint = False DataSource = DataSource1 VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast] ParentShowHint = False ShowHint = False TabOrder = 1 end object DBEdit1: TDBEdit Left = 380 Top = 29 Width = 100 Height = 21 ParentCustomHint = False AutoSize = False DataField = 'Textfeld' DataSource = DataSource1 ParentShowHint = False ShowHint = False TabOrder = 2 OnExit = DBEdit1Exit end object DBEdit2: TDBEdit Left = 380 Top = 56 Width = 100 Height = 21 ParentCustomHint = False AutoSize = False DataField = 'Nummer' DataSource = DataSource1 ParentShowHint = False ShowHint = False TabOrder = 3 end object DBCheckBox1: TDBCheckBox Left = 380 Top = 83 Width = 100 Height = 17 ParentCustomHint = False Caption = 'DBCheckBox1' DataField = 'Checked' DataSource = DataSource1 ParentShowHint = False ShowHint = False TabOrder = 4 end object Button1: TButton Left = 330 Top = 106 Width = 150 Height = 25 ParentCustomHint = False Caption = 'Datensatz anlegen' ParentShowHint = False ShowHint = False TabOrder = 5 OnClick = Button1Click end object Button2: TButton Left = 329 Top = 137 Width = 150 Height = 25 ParentCustomHint = False Caption = 'Datensatz l'#246'schen' ParentShowHint = False ShowHint = False TabOrder = 6 OnClick = Button2Click end object Button3: TButton Left = 330 Top = 168 Width = 150 Height = 25 ParentCustomHint = False Caption = 'Alle Daten l'#246'schen' ParentShowHint = False ShowHint = False TabOrder = 7 OnClick = Button3Click end object DataSource1: TDataSource Left = 248 Top = 16 end object ClientDataSet1: TClientDataSet Aggregates = <> Params = <> Left = 120 Top = 16 end end
Delphi-Quellcode:
unit CDSDemo;
interface uses Winapi.Windows, System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.StdCtrls, Data.DB, Datasnap.DBClient, Vcl.DBCtrls, Vcl.DBGrids, Vcl.Mask, Vcl.ExtCtrls, Vcl.Grids, MidasLib; type TMainForm = class(TForm) DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; DBEdit1,DBEdit2: TDBEdit; DBCheckBox1: TDBCheckBox; DataSource1: TDataSource; ClientDataSet1: TClientDataSet; Button1,Button2,Button3: TButton; Label1,Label2,Label3: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure DBEdit1Exit(Sender: TObject); private { Private-Deklarationen } MainPath:String; Procedure Init_ClientDataSet; end; var MainForm: TMainForm; implementation {$R *.dfm} // TClientDataSet wird standardmäsig als XML gespeichert (langsam) // ich empfehle das Binärformat (schnell ;-) Endung CDS explizit angeben const CDSsuffix = '.CDS'; Function DataSetEmpty(aDataSet:TDataSet):Boolean; begin Result := TRUE; if not Assigned(aDataSet) then Exit; if not aDataSet.Active then Exit; Result := aDataSet.Bof and aDataSet.Eof; end; procedure TMainForm.Button2Click(Sender: TObject); begin If DataSetEmpty(ClientDataSet1) then exit; ClientDataSet1.DisableControls; ClientDataSet1.Delete; if ClientDataSet1.State in [dsEdit, dsInsert] then ClientDataSet1.Post; if ClientDataSet1.RecordCount = 0 then DeleteFile(ClientDataSet1.FileName) else begin ClientDataSet1.SaveToFile(ClientDataSet1.FileName, dfBinary); ClientDataSet1.EnableControls; end; ClientDataSet1.EnableControls; end; procedure TMainForm.Button3Click(Sender: TObject); begin If DataSetEmpty(ClientDataSet1) then exit; ClientDataSet1.Close; DeleteFile(ClientDataSet1.FileName); Init_ClientDataSet; end; procedure TMainForm.DBEdit1Exit(Sender: TObject); begin if ClientDataSet1.State in [dsEdit, dsInsert] then ClientDataSet1.Post; end; procedure TMainForm.FormCreate(Sender: TObject); begin MainPath := ExtractFilePath(Application.ExeName); Init_ClientDataSet; end; Procedure TMainForm.Init_ClientDataSet; begin ClientDataSet1.FileName := MainPath + 'ClientDataSet'+CDSsuffix; if not ClientDataSet1.Active then DeleteFile(ClientDataSet1.FileName); If FileExists(ClientDataSet1.FileName) then ClientDataSet1.Open else begin // eine Definition der Felder kann in der Entwicklungsumgebung // mit Rechtsklick auf das ClientDataSet erfolgen, // es öffnet sich der ClientDataSet-Feldeditor // ich empfehle, die Felder selbst zu definieren := betriebssicherer // das geht auch zur Laufzeit with ClientDataSet1.FieldDefs do begin Clear; Add('Textfeld', ftString, 25); Add('Nummer', ftInteger); Add('Checked', ftBoolean); end; ClientDataSet1.CreateDataSet; // bei Bedarf kann schon ein Datensatz angehängt werden (*with ClientDataSet1 do begin Append; FieldByName('Textfeld').AsString := 'Hello'; FieldByName('Nummer').AsInteger := 3; FieldByName('Checked').AsBoolean := TRUE; end;... usw.*) if ClientDataSet1.State in [dsEdit, dsInsert] then ClientDataSet1.Post; // Speicherung im Binärformat - Endung CDS und 'dfBinary' ClientDataSet1.SaveToFile(ClientDataSet1.FileName, dfBinary); end; DataSource1.DataSet := ClientDataSet1; end; procedure TMainForm.Button1Click(Sender: TObject); begin if DataSetEmpty(ClientDataSet1) then exit; ClientDataSet1.Append; if ClientDataSet1.State in [dsEdit, dsInsert] then ClientDataSet1.Post; end; end. |
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Eine Beispielanwendung ist bei Delphi dabei, z.B. für 10.4 hier:
Code:
Dort sind die kompletten Daten in der .dfm gespeichert.
C:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Object Pascal\LiveBindings\bindlink\vcl
Es gibt hier noch Material zu dem Thema: ![]() ![]() ![]() |
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Tut mir leid für die späte Rückmeldung!
@uwe, wenn man weiß wie es funktioniert ist es sicherlich simples "zusammenklicken" aber mir fehlt da echt jede Erfahrung. @newIndy, Danke für den Rat mit dem Buch und das bereitstellen einer Demo samt Kommentar!!! Echt lieb von Dir! @jaenicke, Delphi Rio bieten kein Beispiel das die Unit MidasLib verwendet aber vielleicht habe ich Dich auch missverstanden, die Links schaue ich mir an, vielen Dank! |
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Zitat:
|
AW: Beispiel Projekt gesucht, Midaslib/ClientDataSet
Tipp:
![]() das Buch von Cary Jensen, finde ich (fand ich) ganz ansprechend. er hat auch mal bei der EKON nen Workshop gemacht, war ganz gut, um nen schnellen Einstieg zu machen für ein Memory-Dataset. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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