Avatar billede fun22 Nybegynder
26. september 2002 - 15:42 Der er 9 kommentarer og
1 løsning

Kalender

Hej


Er der nogen som hved hvor jeg kan finde en guide over hvordan man i delphi laver en kalender, hvor man kan indtaste en besked for hver dag.

/Jesper
Avatar billede borrisholt Novice
26. september 2002 - 15:55 #1
Byg interfacet først, og læg en DB neden under ..

Jens B
Avatar billede fun22 Nybegynder
26. september 2002 - 16:18 #2
Kan jeg få en nærmere beskrivelse???
Avatar billede borrisholt Novice
26. september 2002 - 16:22 #3
www.torry.net :-)

Der er en milliard at tage fra.

Jens B
Avatar billede borrisholt Novice
26. september 2002 - 16:29 #4
Og så er der den med de forskydende helligdage den vil jeg da gerne være vært ved ....

Notificer mig når du har noget.

Jens B
Avatar billede fun22 Nybegynder
29. september 2002 - 13:57 #5
Du kunne vel ikke sige hvordan jeg får det til at arbejde sammen med en database?
Avatar billede borrisholt Novice
30. september 2002 - 08:08 #6
Jeg vil anbefale dig du henter et par eksempler fra Torry og kigger på dem. Det lærer du meget mere af.

Jens B
Avatar billede hermandsen Juniormester
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
Avatar billede fun22 Nybegynder
11. november 2002 - 18:25 #8
Jeg takker mange gange.
Avatar billede hermandsen Juniormester
11. november 2002 - 19:07 #9
Hvis du har fået hvad du ville, så ville lidt point ikke være af vejen! ;)
Avatar billede fun22 Nybegynder
11. november 2002 - 19:12 #10
ups!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester