Quantcast
Channel: Programming - Embarcadero Community
Viewing all articles
Browse latest Browse all 167

RAD Studio 10.1 Berlin - Anniversary - Update 2: Kalenderkomponente mit einer Datenbank nutzen

$
0
0

Es haben mich in den letzten Tage immer wieder Kunden angesprochen, wie man die neue VCL-Komponente "TCalenderView", die mit dem Update 2 von Delphi/C++Builder/RAD Studio 10.1 Berlin eingeführt wurde, mit einer Datenbank benutzen kann.

Ausgangslage: In einer Datenbanktabelle sind Datumswerte gespeichert (31.12.2015) und diese sollen visualisiert werden.

Das Ganze ist recht einfach (ohne Code) umsetzbar. Ohne Beschränkung der Allgemeinheit habe ich eine Standard-VCL-Formularanwendung erstellt mit Datenbankzugriff über FireDAC auf eine SQLite Datenbank (DB-Komponenten direkt im Form):

Standard Form, aktivierte DB-Komponenten

Danach die TCalendarView-Komponente und ein DBGrid zur Visualisierung der Tabelle / Font-Eigenschaft der Kalendar-Komponente angepasst, TDataSource hinzugefügt und verbunden (die Anwendung ist sicherlich nicht schön :-)):

DBGrid, CalendarView, noch nicht verbunden

Mit dem LiveBindings-Designer kommt nun die Verbindung: Ansicht | LiveBindings-Designer:

  • In der CalendarView Komponente fügt man explizit "Date" als "binares Member" hinzu
  • Und verknüpft die passende Spalte mit dem "Date":
  • Das war es schon (für die unidirektionale Verbindung):

Möchte man auch (was wahrscheinlich ist :-) ), die Datenbankwerte auch über die TCalendarView verändern, so kann man folgendes beim OnChange der Kalendar-Komponente einpflegen:

procedure TForm1.CalendarView1Change(Sender: TObject);
begin if OrdersTable.CanModify then begin if not (OrdersTable.State in [dsEdit,dsInsert]) then OrdersTable.Edit; OrdersTable.FieldByName('OrderDate').Value := CalendarView1.Date; end; end;

(Hinweis: Da SQLite eine Single-User-Datenbank ist (Datenbankdatei ist gelockt!), habe ich in diesem Zusammenhang die Active-Property der DB-Connection und der Tabelle wieder ausgeschaltet und manuell im Form-Create gesetzt:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Sqlite_demoConnection.Connected := true;
  OrdersTable.Active := true;
end;

 

[DownloadButton Product='Delphi' Caption='Download von Delphi Testversion'][DownloadButton Product='Cbuilder' Caption='Download von C++Builder Testversion']

 


Viewing all articles
Browse latest Browse all 167

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>