Post-it : un pense-bête tout simple.

Description

Post-it est un petit "pense-bête" tout simple qui vous permet d'afficher sur votre écran une de ces fameuses petites feuilles jaunes en éliminant le problème de la colle !. Post-it fonctionne sous Windows 95, 98, ME, XP. et g pas essayer sur Vista.

Pour les modifications : (date de -samedi 18 octobre 2008-), je voulais savoir qu'elles sont les critères d'une application sharware ? je souhaite améliorer le code et le soigner. Et ajouter quelques trucs : clignote bar, jouer un son, une table paradox qui contien les messages, affichage dynamiques de la Form pour chaque message avec la methode .Create(...), répétidtion d'alerte des messages (heure, jour, semaine, mois). Merci pour les réponses.

Source / Exemple :


unit Main;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Menus, Buttons, ExtCtrls,
  Printers, IniFiles, StdCtrls, ComCtrls,
  ToolWin, ShellApi;
  
//sys try
  const wm_AppelMessage=wm_user+1;
//fin sys try

Type Position = Record
     Px    : Word;
     Py    : Word;
     H     : Word;
     L     : Word;
     Tjr   : Char;
     Heure : String [8];
  End;

type
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    FileMenu: TMenuItem;
    Imprimer: TMenuItem;
    N1: TMenuItem;
    Quitter: TMenuItem;
    Help: TMenuItem;
    Aide: TMenuItem;
    Dummeauteur: TMenuItem;
    Toujoursvisible1: TMenuItem;
    Insrerdateetheure1: TMenuItem;
    Memo: TMemo;
    PrinterSetupDialog: TPrinterSetupDialog;
    N2: TMenuItem;
    Configurationdelimpression1: TMenuItem;
    Edition1: TMenuItem;
    Couper1: TMenuItem;
    Copier1: TMenuItem;
    Coller1: TMenuItem;
    Supprimer1: TMenuItem;
    N3: TMenuItem;
    Toutslectionner1: TMenuItem;
    Effacer1: TMenuItem;
    Afficher: TTimer;
    Rglerlheuredaffichage1: TMenuItem;
    MenuPop: TPopupMenu;
    Ouvrir1: TMenuItem;
    N4: TMenuItem;
    Quitter1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure ImprimerClick(Sender: TObject);
    procedure QuitterClick(Sender: TObject);
    procedure AideClick(Sender: TObject);
    procedure DummeauteurClick(Sender: TObject);
    procedure MemoChange(Sender: TObject);
    procedure Configurationdelimpression1Click(Sender: TObject);
    procedure Couper1Click(Sender: TObject);
    procedure Copier1Click(Sender: TObject);
    procedure Coller1Click(Sender: TObject);
    procedure Supprimer1Click(Sender: TObject);
    procedure Toutslectionner1Click(Sender: TObject);
    procedure Toujoursvisible1Click(Sender: TObject);
    procedure Insrerdateetheure1Click(Sender: TObject);
    procedure Effacer1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Rglerlheuredaffichage1Click(Sender: TObject);
    procedure AfficherTimer(Sender: TObject);
    procedure Ouvrir1Click(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Rduire1Click(Sender: TObject);
  private
    { Private-déclarations }
    //sys try
       procedure WMAppelMessage(var msg : TMessage); message wm_AppelMessage;
    //fin sys try
  public
    { Public-déclarations }
    chemin:string;
    demo:boolean;
    Fic : File OF Position;
    P   : Position;
  end;

var
  MainForm: TMainForm;
  //sys try
     tray:TNotifyIconData;
  //fin sys try

implementation

uses F_Heure;

{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
var
    ini:TIniFile;
    max:boolean;
begin
   {$I-}
     AssignFile (Fic, 'taille.cfg');
     FileMode   := 0;
     ReSet      (Fic);
     Read       (Fic, P);
     CloseFile  (Fic);
     {$I+}
    IF IOResult = 0 Then
     Begin
         MainForm.Left   := P.Px;
         MainForm.Top    := P.Py;
         MainForm.Height := P.H ;
         MainForm.Width  := P.L ;
     End
     Else
        Begin
         MainForm.Left   := 0;
         MainForm.Top    := 0;
         MainForm.Height := 100 ;
         MainForm.Width  := 120 ;
        End;
        
IF FileExists ('Notes.txt') Then
   Memo.Lines.LoadFromFile('Notes.txt');
IF P.Tjr = 'o'  Then
   Begin
    Toujoursvisible1.Checked := True;
    MainForm.FormStyle       := fsStayOnTop;
   End
   Else
   Begin
    Toujoursvisible1.Checked := False;
    MainForm.FormStyle       := fsNormal;
   End;
  {
  demo:=false;
  chemin:=ExtractFilePath(Application.ExeName); {le chemin de l'appli}
  {ini:=TIniFile.Create('postit.ini');
  Toujoursvisible1.Checked:=ini.ReadBool('Options','Visible',false);
  max:=ini.ReadBool('MainW','Maxi',false);
  if max then WindowState:=wsMaximized else begin
     Left:=ini.ReadInteger('MainW','x',Screen.Width-170);
     Top:=ini.ReadInteger('MainW','y',Screen.Height-120);
     Width:=ini.ReadInteger('MainW','w',170);
     Height:=ini.ReadInteger('MainW','h',120);
  end;
  ini.Free;
  if Toujoursvisible1.Checked then FormStyle:=fsStayOnTop
     else FormStyle:=fsNormal;
  if FileExists(chemin+'postit.txt') then memo.Lines.SaveToFile(chemin+'postit.txt');
  MainForm.Memo.OnChange :=  MemoChange; }

end;

//sys try
procedure TMainForm.WMAppelMessage(var msg : TMessage);
Var Curs:TPoint;
begin
//Clique gauche de la souris...
if msg.LParam=Wm_RButtonDown then
begin
SetForegroundWindow(Handle);
GetCursorPos(Curs); //Récupère les coordonnées de la souris
MenuPop.Popup(Curs.X,Curs.Y); //Ouvre le menu surgissant à l'emplacement spécfié par les coordonnees de la souris
PostMessage(Handle,WM_NULL,0,0);
end;
end;
//fin sys try

procedure TMainForm.ImprimerClick(Sender: TObject);
var Line:integer; PrintText:System.Text;
begin
        Printer.Title:='Post-it';
        AssignPrn(PrintText);
        Rewrite(PrintText);
        Printer.Canvas.Font:=Memo.Font;
        for line:=0 to memo.Lines.Count-1 do
            Writeln(PrintText,Memo.Lines[line]);
        closefile(PrintText);
end;

procedure TMainForm.QuitterClick(Sender: TObject);
begin
     P.Px       := MainForm.Left;
     P.Py       := MainForm.Top;
     P.H        := MainForm.Height;
     P.L        := MainForm.Width;
     IF Toujoursvisible1.Checked = True Then P.Tjr := 'o'
                                        Else P.Tjr := 'n';
     AssignFile (Fic, 'taille.cfg');
     FileMode   := 1;
     ReWrite    (Fic);
     Write      (Fic, P);
     CloseFile  (Fic);

//sys try
  tray.cbSize:=sizeof(tray);
  tray.wnd:=handle;
  tray.uID:=1;
  tray.UCallbackMessage:=wm_AppelMessage;
  tray.hIcon:=Application.Icon.handle; //Choix de l'icone
  tray.szTip:='Post-it'; //Choix du message
  tray.uFlags:=nif_message or nif_icon or nif_tip;
  Shell_NotifyIcon(Nim_ADD,@tray);
//fin sys try

Hide; // cacher l'application...
end;

procedure TMainForm.AideClick(Sender: TObject);
begin
     Application.HelpCommand(HELP_CONTENTS, 0);
end;

procedure TMainForm.DummeauteurClick(Sender: TObject);
begin
     Application.HelpFile := 'KATALOG.HLP';
     Application.HelpCommand(HELP_CONTENTS, 0);
     Application.HelpFile := 'POSTIT.HLP';
end;

procedure TMainForm.MemoChange(Sender: TObject);
begin
     //code original
     //memo.Lines.SaveToFile('d:\posit'+'postit.txt');
end;

procedure TMainForm.Configurationdelimpression1Click(Sender: TObject);
begin
     PrinterSetupDialog.Execute;
end;

procedure TMainForm.Couper1Click(Sender: TObject);
begin
     Memo.CutToClipboard;
end;

procedure TMainForm.Copier1Click(Sender: TObject);
begin
     Memo.CopyToClipboard;
end;

procedure TMainForm.Coller1Click(Sender: TObject);
begin
     Memo.PasteFromClipboard;
end;

procedure TMainForm.Supprimer1Click(Sender: TObject);
begin
     Memo.ClearSelection;
end;

procedure TMainForm.Toutslectionner1Click(Sender: TObject);
begin
     Memo.SelectAll;
end;

procedure TMainForm.Toujoursvisible1Click(Sender: TObject);
var ini:TIniFile;
begin

IF Toujoursvisible1.Checked  = True Then
    Begin
     MainForm.FormStyle := fsNormal;
     Toujoursvisible1.Checked := False;
    End
    Else
    Begin
      MainForm.FormStyle := fsStayOnTop;
      Toujoursvisible1.Checked := True;
    End;
     // Code originale
     {
     Toujoursvisible1.Checked:=not Toujoursvisible1.Checked;
     if Toujoursvisible1.Checked then FormStyle:=fsStayOnTop
     else FormStyle:=fsNormal;
     ini:=TIniFile.Create('postit.ini');
     ini.EraseSection('Options');
     ini.WriteBool('Options','Visible',Toujoursvisible1.Checked);
     ini.Free;
     }
end;

procedure TMainForm.Insrerdateetheure1Click(Sender: TObject);
begin
     Memo.Lines.Add(DateTimeToStr(Now));
end;

procedure TMainForm.Effacer1Click(Sender: TObject);
begin
     Memo.SelectAll;
     Memo.ClearSelection;
end;

procedure TMainForm.FormResize(Sender: TObject);
begin

      // Code original
     {
     ini:=TIniFile.Create('postit.ini');
     ini.EraseSection('MainW');
     ini.WriteInteger('MainW','x',left);
     ini.WriteInteger('MainW','y',top);
     ini.WriteInteger('MainW','w',Width);
     ini.WriteInteger('MainW','h',Height);
     if WindowState=wsMaximized then ini.WriteBool('MainW','Maxi',true)
     else ini.WriteBool('MainW','Maxi',false);
     ini.Free;
     }
end;

procedure TMainForm.Rglerlheuredaffichage1Click(Sender: TObject);
begin
FHeure.ShowModal;
end;

procedure TMainForm.AfficherTimer(Sender: TObject);
Var
 PostitHeure  : TDateTime;
 SysH, SysM, SysS, SysMs : Word;
 PosH, PosM, PosS, PosMs : Word;
begin
 PostitHeure := StrToTime (MainForm.P.Heure);
 DecodeTime  (Time, SysH, SysM, SysS, SysMs);
 DecodeTime  (PostitHeure, PosH, PosM, PosS, PosMs);

 IF ((SysH = PosH)  And
     (SysM = PosM)) Then
     MainForm.Show;
end;

procedure TMainForm.Ouvrir1Click(Sender: TObject);
begin
MainForm.Show;
end;

procedure TMainForm.Quitter1Click(Sender: TObject);
begin
     P.Px       := MainForm.Left;
     P.Py       := MainForm.Top;
     P.H        := MainForm.Height;
     P.L        := MainForm.Width;
     IF Toujoursvisible1.Checked = True Then P.Tjr := 'o'
                                        Else P.Tjr := 'n';
     AssignFile  (Fic, 'taille.cfg');
     FileMode    := 1;
     Rewrite     (Fic);
     Write       (Fic, P);
     CloseFile   (Fic);
     Memo.Lines.SaveToFile ('Notes.txt');
//sys try
  Close; //Ferme la fiche...
  Shell_NotifyIcon(Nim_DELETE,@tray); //Supprime le tray icon...
//fin sys try
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Hide; // cacher l'application...
end;

procedure TMainForm.Rduire1Click(Sender: TObject);
begin
MainForm.WindowState := wsMinimized;
end;

end.

Conclusion :


Ce programme n'est pas de moi, je voulais le partagée avec mes amis les programmeurs Delphistes...

l'auteur: http://www.chambily.com/

Note : g mis mes modifications : (date de -samedi 18 octobre 2008-).

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.