[Lazarus Delphi] Gadżet na pulpit
#1
Dzięki komponentowi IpHtmlPanel  można zrobić fajny gadżet na pulpit. Mój programik wyświetla jakieś ważne informacje/przypomnienia na pulpicie. Tak alternatywa dla żółtych karteczek... Program napisany w środowisku Lazarus. Jak komuś  będzie się chciało rozwinąć ten programik to chętnie zapoznam się z kodem/propozycją. Poniżej kod, fotka i pytanie Wink 

Kod:
unit InfoPulpit_modul1;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, IpHtml, Forms,
 Dialogs,ShlObj, Controls, Menus, Windows, LCLType;

type

 { TForm1 }

 TForm1 = class(TForm)
   IpHtmlPanel1: TIpHtmlPanel;
   MenuItem1: TMenuItem;
   MenuItem2: TMenuItem;
   PopupMenu1: TPopupMenu;
   procedure FormCreate(Sender: TObject);
   procedure MenuItem1Click(Sender: TObject);
   procedure MenuItem2Click(Sender: TObject);
 private
   { private declarations }
  protected
   procedure CreateParams(var Params: TCreateParams); override;
 public
   { public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.lfm}
// Okno programu "zawsze nieaktywne"
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle:= Params.ExStyle or WS_EX_NOACTIVATE;
end;

// Pobranie sciezki do Moich dokumentów - tutaj plik z informacjami/przypomnieniami w html
// Folder Moje dokumeny parametr = 5
function MojeDokumentySciezka(const Folder: Integer): string;
var
 Path: array[0..MAX_PATH] of Char;
begin
 SHGetSpecialFolderPath(0, Path, Folder , False);
 Result := Path;
end;
// Ustawienie okna - pionowy pasek po prawej stronie ekranu
procedure UstawienieOknaProgramu;
begin
 Form1.Left:= Screen.DesktopWidth - 300;
 Form1.Top := 0;
 Form1.Height:= Screen.DesktopHeight - 30;
end;

procedure PobranieNotatek;
var
 SL : TStringList;
begin
 SL := TStringList.Create;
 try
 SL.LoadFromFile(MojeDokumentySciezka(5)+'\Przypomnienia na pulpicie.html');
 Form1.IpHtmlPanel1.SetHtmlFromStr(SL.Text);
 finally
 SL.Free;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 UstawienieOknaProgramu;
 if not FileExists(MojeDokumentySciezka(5)+'\Przypomnienia na pulpicie.html') then
 begin
   ShowMessage('Brak pliku z informacjami lub zmieniona nazwa (lokalizacja pliku musi być w Moich dokumentach).');
   Application.Terminate;
 end else
 begin
 PobranieNotatek;
 end;
end;

// Menu rozwijane prawoklikiem - EDYCJA
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
 Shellexecute(0,'Open','notepad.exe',PChar(MojeDokumentySciezka(5)+'\Przypomnienia na pulpicie.html'),nil,1);
end;

// Menu rozwijane prawoklikiem -  ODSWIEŻ
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
 PobranieNotatek;
 UstawienieOknaProgramu;
end;
end.

Do prawidłowego wyświetlania treści potrzebny jest jeszcze plik html o nazwie: Przypomnienia na pulpicie.html . Tu zapisujemy notatki.
Szablon pliku:

Kod:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>

<body style="background: #303030; color: #A6A6A6">


<div> </div>

<div></div>

<div></div>


</body>
</html>



.
[Obrazek: InfoPulpit.png]

Mam jedno pytanie... jak zbadać szerokość i położenie paska zadań Windows?
Post sprawdzony przez  Arcabit Internet Security
Odpowiedz
#2
Kod:
hTaskBarWindow:=FindWindow('Shell_TrayWnd',nil);
GetWindowRect( hTaskBarWindow, Rect );
TaskWidth := Rect.Right - Rect.Left;
TaskHeight := Rect.Bottom - Rect.Top;
ShowMessage(IntToStr(TaskHeight));
Rect to nazwa zmiennej typu TRect;
hTaskBarWindow to oczywiście uchwyt
GetWindowRect() i FindWindow() to funkcje z modułu Windows.

A tu masz położenie paska: http://www.swissdelphicenter.ch/torry/sh...php?id=347
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#3
Dzięki Smile Kod teraz wygląda tak:

Funkcja

Kod:
function WysokoscPaskaZadan(): Integer;
var
Rect: TRect; hTaskBarWindow : THandle;
begin
 hTaskBarWindow:=FindWindow('Shell_TrayWnd',nil);
 GetWindowRect( hTaskBarWindow, Rect);
 Result := Rect.Bottom - Rect.Top;
end;
Wywołanie

Kod:
procedure UstawienieOknaProgramu;
begin
 Form1.Top := 0;
 Form1.Left:= Screen.DesktopWidth - Form1.Width;
 Form1.Height:= Screen.DesktopHeight - WysokoscPaskaZadan;
end;
Post sprawdzony przez  Arcabit Internet Security
Odpowiedz




Użytkownicy przeglądający ten wątek: 1 gości