11. november 2002 - 17:23
#7
Her er et lille program jeg en gang lavede til skolebrug (fik det sjovt nok aldrig brugt)...
Lektie.dpr
======================================================
program Lektie;
uses
Forms,
LektieU in 'LektieU.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.Title := 'Lekter - Jesper Hermansen';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
======================================================
LektieU.dfm
======================================================
object Form1: TForm1
Left = 193
Top = 107
Width = 415
Height = 215
Caption = 'Lekter - Jesper Hermansen HTX Christiansbjerg 2000-2003'
Color = clBtnFace
Constraints.MinHeight = 215
Constraints.MinWidth = 415
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Verdana'
Font.Style = []
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object mcDato: TMonthCalendar
Left = 2
Top = 4
Width = 213
Height = 153
Date = 37489.7184553241
TabOrder = 0
WeekNumbers = True
OnClick = mcDatoClick
OnGetMonthInfo = mcDatoGetMonthInfo
end
object memLektier: TMemo
Left = 220
Top = 4
Width = 185
Height = 182
Anchors = [akLeft, akTop, akRight, akBottom]
MaxLength = 1024
ScrollBars = ssVertical
TabOrder = 1
end
object bbtnSlet: TBitBtn
Left = 4
Top = 161
Width = 67
Height = 25
Caption = '&Slet'
TabOrder = 2
OnClick = bbtnSletClick
Glyph.Data = {
06020000424D0602000000000000760000002800000028000000140000000100
04000000000090010000120B0000120B00001000000010000000000000000000
80000080000000808000800000008000800080800000C0C0C000808080000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
333333333333333FFFFFF33333333333333000000333333333333FF888888FF3
3333333330099999900333333333F8877777788F333333330999999999903333
333F877777777778F3333330999999999999033333F87777777777778F333309
999999999999903333877777777777777833330999999999999990333F877777
7777777778F3309999999999999999033877FFFFFFFFFFFF77833099FFFFFFFF
FFFF9903387788888888888877833099FFFFFFFFFFFF99033877888888888888
77833099FFFFFFFFFFFF9903387788888888888877833099FFFFFFFFFFFF9903
387788888888888877833099999999999999990338F77777777777777F833309
99999999999990333387777777777777783333099999999999999033338F7777
77777777F833333099999999999903333338F7777777777F8333333309999999
9990333333338FF777777FF83333333330099999900333333333388FFFFFF883
3333333333300000033333333333333888888333333333333333333333333333
33333333333333333333}
NumGlyphs = 2
end
object bbtnLuk: TBitBtn
Left = 75
Top = 161
Width = 67
Height = 25
Caption = '&Luk'
TabOrder = 3
Kind = bkClose
end
object bbtnOm: TBitBtn
Left = 146
Top = 161
Width = 67
Height = 25
Caption = '&Om'
TabOrder = 4
OnClick = bbtnOmClick
Glyph.Data = {
DE020000424DDE0200000000000036000000280000000D000000110000000100
180000000000A8020000C30E0000C30E00000000000000000000808080000000
0000000000000000000000000000000000000000000000000000000000000000
00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF808080FFFFFF
FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
00FF808080FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFF808080008080000000FF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFF8080
80008080008080000000FFFFFFFFFFFFFFFFFFFFFFFF000000FF808080FFFFFF
FFFFFFFFFFFF80808000FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFF0000
00FF808080FFFFFFFFFFFFFFFFFF808080FFFFFF00FFFF008080000000FFFFFF
FFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFFFFFFFF80808000FFFF00
FFFF000000FFFFFFFFFFFFFFFFFF000000FF808080FFFFFFFFFFFFFFFFFFFFFF
FF808080FFFFFF00FFFF008080000000FFFFFFFFFFFF000000FF808080FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFF80808000FFFF00FFFF000000FFFFFF0000000000
00FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080FFFFFF00FFFF008080
000000808080C0C0C0FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
8080000080000080000000C0C0C0C0C0C0FF8080808080808080808080808080
808080808080808080800000FF000080000000C0C0C0C0C0C0FFC0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0808080808080C0C0C0C0C0C0C0C0
C0FF}
end
end
======================================================
LektieU.pas
======================================================
unit LektieU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons;
type
TLektieRec = record
Dato: TDate;
Lektie: String;
end;
TForm1 = class(TForm)
mcDato: TMonthCalendar;
memLektier: TMemo;
bbtnSlet: TBitBtn;
bbtnLuk: TBitBtn;
bbtnOm: TBitBtn;
procedure mcDatoGetMonthInfo(Sender: TObject; Month: Cardinal;
var MonthBoldInfo: Cardinal);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure mcDatoClick(Sender: TObject);
procedure bbtnSletClick(Sender: TObject);
procedure bbtnOmClick(Sender: TObject);
private
LastDate: TDate;
Lektier: array of TLektieRec;
procedure GemLektier;
procedure HentLektier;
procedure GemLektieIArray(Dato: TDate; Text: String);
function HentLektieFraArray(Dato: TDate): String;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.GemLektier;
var
F: File;
procedure WriteString(const S: String);
var
Size: Word;
P: PChar;
begin
Size := Length(S);
GetMem(P, Size+1);
StrCopy(P, PChar(S));
BlockWrite(F, Size, 2);
BlockWrite(F, P^, Size);
FreeMem(P);
end;
var
I: Integer;
begin
AssignFile(F, ExtractFilePath(Application.ExeName) + 'Lektier.dat');
Rewrite(F, 1);
for I := Low(Lektier) to High(Lektier) do
begin
if Lektier[I].Dato = 0 then Continue;
BlockWrite(F, Lektier[I].Dato, SizeOf(TDate));
WriteString(Lektier[I].Lektie);
end;
CloseFile(F);
end;
procedure TForm1.HentLektier;
var
F: File;
function ReadString: String;
var
Count: Word;
Buf: array [1..1024] of Char;
begin
BlockRead(F, Count, 2);
BlockRead(F, Buf, Count);
Result := Copy(Buf, 0, Count);
end;
var
I: Integer;
S: String;
begin
S := ExtractFilePath(Application.ExeName) + 'Lektier.dat';
if not FileExists(S) then Exit;
AssignFile(F, S);
Reset(F, 1);
I := 0;
while not Eof(F) do
begin
SetLength(Lektier, I+1);
BlockRead(F, Lektier[I].Dato, SizeOf(TDate));
Lektier[I].Lektie := ReadString;
Inc(I);
end;
CloseFile(F);
end;
procedure TForm1.mcDatoGetMonthInfo(Sender: TObject;
Month: Cardinal; var MonthBoldInfo: Cardinal);
var
I, Counter: Integer;
Days: array of Cardinal;
y, m, d, Day, Year: Word;
begin
Counter := 0;
SetLength(Days, 1);
Days[0] := 0;
for I := Low(Lektier) to High(Lektier) do
begin
DecodeDate(Lektier[I].Dato, y, m, d);
if m = Month then
begin
DecodeDate(mcDato.Date, Year, m, Day);
if y = Year then
begin
SetLength(Days, Counter + 1);
Days[Counter] := d;
Inc(Counter);
end;
end;
end;
mcDato.BoldDays(Days, MonthBoldInfo);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
GemLektieIArray(LastDate, memLektier.Text);
GemLektier;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HentLektier;
mcDato.Date := Date;
LastDate := mcDato.Date;
memLektier.Text := HentLektieFraArray(LastDate);
bbtnSlet.Enabled := memLektier.Text <> '';
end;
procedure TForm1.mcDatoClick(Sender: TObject);
begin
GemLektieIArray(LastDate, memLektier.Text);
LastDate := mcDato.Date;
memLektier.Text := HentLektieFraArray(LastDate);
bbtnSlet.Enabled := memLektier.Text <> '';
end;
procedure TForm1.GemLektieIArray(Dato: TDate; Text: String);
var
I: Integer;
begin
if Text = '' then Exit;
for I := Low(Lektier) to High(Lektier) do
if Trunc(Lektier[I].Dato) = Trunc(Dato) then
begin
Lektier[I].Lektie := Text;
Exit;
end;
I := High(Lektier)+1;
SetLength(Lektier, I+1);
Lektier[I].Dato := Dato;
Lektier[I].Lektie := Text;
end;
function TForm1.HentLektieFraArray(Dato: TDate): String;
var
I: Integer;
begin
Result := '';
for I := Low(Lektier) to High(Lektier) do
if Trunc(Lektier[I].Dato) = Trunc(Dato) then
begin
Result := Lektier[I].Lektie;
Break;
end;
end;
procedure TForm1.bbtnSletClick(Sender: TObject);
var
I: Integer;
begin
for I := Low(Lektier) to High(Lektier) do
if Lektier[I].Dato = mcDato.Date then
begin
Lektier[I].Dato := 0;
memLektier.Clear;
Break;
end;
end;
procedure TForm1.bbtnOmClick(Sender: TObject);
begin
Application.MessageBox('Lekter'#13#10'Lavet af Jesper Hermansen', 'Lekter',
MB_ICONINFORMATION + MB_OK);
end;
end.
Bare opret de tre filer og åbn .dpr-filen i Delphi... Så siger den noget med at res-filen ikke blev fundet, så den er recreated, du trykker bare ok og compiler!
//hermandsen