OK, jeg har tilføjet flg. til Form1
1) en Listbox og
2) en procedure "Add2ListBox"
Add2ListBox kaldes dels i FormCreate og dels i MonthCalendar1Click
Her er hele unit'en
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ComCtrls, StdCtrls, DBCtrls, ADODB;
type
TForm1 = class(TForm)
ADOTable1: TADOTable;
DBMemo1: TDBMemo;
MonthCalendar1: TMonthCalendar;
DataSource1: TDataSource;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure MonthCalendar1Click(Sender: TObject);
procedure DataSource1UpdateData(Sender: TObject);
private
{ Private declarations }
CurDate: TDate;
procedure Add2ListBox;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOTable1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'calendar.mdb;Persist Security Info=False';
ADOTable1.TableName:= 'Calendar';
// Sæt hjælpevariablen CurDate til dags dato
CurDate := Date;
// Sørg for at ADOTable1 bruger filter
ADOTable1.Filtered := True;
// Sæt filter til Dags dato (default for TMonthCal.)
ADOTable1.Filter := 'Dato = ' + DateTimeToStr(CurDate);
Datasource1.DataSet:= ADOTable1;
// Enable autom. redigering.
// NB! Hvis redigering IKKE ønskes sættes denne til False
Datasource1.AutoEdit := True;
// Sæt datafield i DBMemo
DBMemo1.DataField := 'Note';
ADOTable1.Active := True;
Add2ListBox;
end;
// Event: MonthCalendar1.OnClick
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
// undgå unødv. overhead og sæt kun filter ved reelle datoskift
if CurDate <> MonthCalendar1.Date then
begin
// opdater filter. NB! Medfører opdatering af evt. ændret Note
ADOTable1.Filter := 'Dato = ' + DateTimeToStr(MonthCalendar1.Date);
// Sæt CurDate til ny dato.
// NB! Må først ændres EFTER Filteret er sat a.h.t. opdatering
CurDate := MonthCalendar1.Date;
Add2ListBox;
end;
end;
// Event: Datasource1.OnUpdateData (Udelades hvis redigering ikke ønskes).
procedure TForm1.DataSource1UpdateData(Sender: TObject);
begin
// Sæt Dato (primær nøgle) til CurDate.
ADOTable1.Fields[0].Value := CurDate;
end;
procedure TForm1.Add2ListBox;
function Commarize(S: array of String): String;
var
I: Integer;
begin
Result := '';
for I := Low(S) to High(S) do
begin
Result := Result + S[I];
if I < High(S) then Result := Result + ', ';
end;
end;
begin
with ADOTable1 do
if not IsEmpty then // Check om dataset er tomt
ListBox1.AddItem(Commarize([Fields[0].AsString,
Fields[2].AsString,
Fields[3].AsString]), nil);
{ eller hvis du hellere vil bruge feltnavne:
ListBox1.AddItem(Commarize([FieldByName('Dato').AsString,
FieldByName('Tekst').AsString,
FieldByName('Heltal').AsString]), nil);}
end;
end.
NB! Det er OK med de 50 UP...
mvh
hsv