|
Tavolozza
(scritto con Delphi 5) Utility
per la scelta dei colori per un'applicazione. unit TavolozzaU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, Buttons, ToolWin;
type
TForm1 = class(TForm)
PanelRGB: TPanel;
StatusBar1: TStatusBar;
Panel1: TPanel;
LabelIntero: TLabel;
LabelHex: TLabel;
LabelBlu: TLabel;
LabelVerde: TLabel;
LabelRosso: TLabel;
LabelValoreBlu: TLabel;
LabelValoreVerde: TLabel;
LabelValoreRosso: TLabel;
LabelHexBlu: TLabel;
LabelHexVerde: TLabel;
LabelHexRosso: TLabel;
LabelValoreAdatta: TLabel;
LabelHexAdatta: TLabel;
LabelHexRGB: TLabel;
ScrollBarBlu: TScrollBar;
ScrollBarVerde: TScrollBar;
ScrollBarRosso: TScrollBar;
ScrollBarAdatta: TScrollBar;
PanelBlu: TPanel;
PanelVerde: TPanel;
PanelRosso: TPanel;
ToolBar1: TToolBar;
SBEsci: TSpeedButton;
SBAbout: TSpeedButton;
GroupBoxColore: TGroupBox;
LabelFrontPage: TLabel;
LabelPalette: TLabel;
RBFrontPage: TRadioButton;
RBDelphi: TRadioButton;
SBAiuto: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure ScrollBarRGBChange(Sender: TObject);
procedure RadioButtonClick(Sender: TObject);
procedure TavolozzaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SBAiutoClick(Sender: TObject);
procedure SBAboutClick(Sender: TObject);
procedure SBEsciClick(Sender: TObject);
protected
procedure WMGetMinMaxInfo(var message: TWMGetMinMaxInfo);
message wm_GetMinMaxInfo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses UInformazioni;
{$R *.DFM}
{ gestisce l'evento OnCreate }
procedure TForm1.FormCreate(Sender: TObject);
begin
{ posiziona la finestra sullo schermo }
Form1.Left := 20;
Form1.Top := 20;
{ carica le impostazioni di visualizzazione in base al RadioButton
selezionato (di default è "Checked" RBFrontPage) }
RadioButtonClick(Self);
end;
{ gestisce il Windows Message "GetMinMaxInfo" }
procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
begin
with Message.MinMaxInfo^.ptMinTrackSize
do
begin
{ imposta la dimensione minima della finestra sullo schermo }
x := 600;
y := 480;
end;
end;
{ gestisce gli eventi OnChange delle ScrollBarr }
procedure TForm1.ScrollBarRGBChange(Sender: TObject);
var
Variabile : string;
begin
{ gestisce la risposta allo scorrimento della barra color rosso }
if sender = ScrollBarRosso then
begin
{ visualizza il valore del colore (da 0 a 255) }
LabelValoreRosso.Caption := IntToStr(ScrollBarRosso.Position);
{ visualizza il valore del colore in esadecimale (da 00 a FF) }
LabelHexRosso.Caption := IntToHex(ScrollBarRosso.Position, 2);
{ visualizza il valore del colore per Delphi }
LabelHexRGB.Caption := '$' + LabelHexAdatta.Caption + LabelHexBlu.Caption
+ LabelHexVerde.Caption + LabelHexRosso.Caption;
{ visualizza il valore del colore per FrontPage }
LabelFrontPage.Caption := '#' + LabelHexRosso.Caption +
LabelHexVerde.Caption + LabelHexBlu.Caption;
{ colora il pannello piccolo del rosso in base al valore
esadecimale della sua barra }
Variabile := '$000000' + LabelHexRosso.Caption;
PanelRosso.Color := StrToInt(Variabile);
{ colora il pannello grande in base al valore esadecimale
delle quattro barre (N.B.: qui si utilizza il colore Delphi) }
PanelRGB.Color := StrToInt(LabelHexRGB.Caption);
end;
{ gestisce la risposta allo scorrimento della barra color verde }
if sender = ScrollBarVerde then
begin
LabelValoreVerde.Caption := IntToStr(ScrollBarVerde.Position);
LabelHexVerde.Caption := IntToHex(ScrollBarVerde.Position, 2);
LabelHexRGB.Caption := '$' + LabelHexAdatta.Caption + LabelHexBlu.Caption
+ LabelHexVerde.Caption + LabelHexRosso.Caption;
LabelFrontPage.Caption := '#' + LabelHexRosso.Caption +
LabelHexVerde.Caption + LabelHexBlu.Caption;
Variabile := '$0000' + LabelHexVerde.Caption +
'00';
PanelVerde.Color := StrToInt(Variabile);
PanelRGB.Color := StrToInt(LabelHexRGB.Caption);
end;
{ gestisce la risposta allo scorrimento della barra color blu }
if sender = ScrollBarBlu then
begin
LabelValoreBlu.Caption := IntToStr(ScrollBarBlu.Position);
LabelHexBlu.Caption := IntToHex(ScrollBarBlu.Position, 2);
LabelHexRGB.Caption := '$' + LabelHexAdatta.Caption + LabelHexBlu.Caption
+ LabelHexVerde.Caption + LabelHexRosso.Caption;
LabelFrontPage.Caption := '#' + LabelHexRosso.Caption +
LabelHexVerde.Caption + LabelHexBlu.Caption;
Variabile := '$00' + LabelHexBlu.Caption +
'0000';
PanelBlu.Color := StrToInt(Variabile);
PanelRGB.Color := StrToInt(LabelHexRGB.Caption);
end;
{ gestisce la risposta allo scorrimento della barra palette (Delphi)}
if sender = ScrollBarAdatta then
begin
{ visualizza il valore della palette (da 0 a 2) }
LabelValoreAdatta.Caption := IntToStr(ScrollBarAdatta.Position);
{ visualizza il valore della palette in esadecimale (da 00 a 02) }
LabelHexAdatta.Caption := IntToHex(ScrollBarAdatta.Position, 2);
{ visualizza il valore del colore per Delphi }
LabelHexRGB.Caption := '$' + LabelHexAdatta.Caption + LabelHexBlu.Caption
+ LabelHexVerde.Caption + LabelHexRosso.Caption;
{ colora il pannello grande in base al valore esadecimale
delle quattro barre (N.B.: qui si utilizza il colore Delphi) }
PanelRGB.Color := StrToInt(LabelHexRGB.Caption);
{ fornisce una descrizione della palette selezionata }
Case ScrollBarAdatta.Position
of
0: StatusBar1.Panels[0].Text := 'Colore della palette di sistema';
1: StatusBar1.Panels[0].Text := 'Colore della palette attuale';
2: StatusBar1.Panels[0].Text := 'Colore della palette logica del device
context attuale';
end;
end;
end;
{ gestisce la selezione del RadioButton }
procedure TForm1.RadioButtonClick(Sender: TObject);
begin
{ gestisce il RadioButton FrontPage selezionato }
if RBFrontPage.Checked then
begin
{ azzera e poi nasconde la barra di scorrimento e le etichette
della palette (utilizzate solo per Delphi) }
ScrollBarAdatta.Position := 0;
LabelPalette.Visible := False;
ScrollBarAdatta.Visible := False;
LabelValoreAdatta.Visible := False;
LabelHexAdatta.Visible := False;
StatusBar1.Panels[0].Text := '';
{ intesta la visualizzazione del codice esadecimale del colore }
GroupBoxColore.Caption := 'Colore FrontPage';
{ nasconde il codice colore di Delphi }
LabelHexRGB.Visible := False;
{ visualizza il codice colore di FrontPage }
LabelFrontPage.Visible := True;
end
else
{ gestisce il RadioButton Delphi selezionato }
begin
{ visualizza la barra di scorrimento e le etichette
della palette (utilizzate solo per Delphi) }
LabelPalette.Visible := True;
ScrollBarAdatta.Visible := True;
LabelValoreAdatta.Visible := True;
LabelHexAdatta.Visible := True;
StatusBar1.Panels[0].Text := 'Colore della palette di sistema';
{ intesta la visualizzazione del codice esadecimale del colore }
GroupBoxColore.Caption := 'Colore Delphi';
{ nasconde il codice colore di FrontPage }
LabelFrontPage.Visible := False;
{ visualizza il codice colore di Delphi e lo posiziona }
LabelHexRGB.Visible := True;
LabelHexRGB.Left := 20; // per semplificare la fase di design
end;
end;
{ gestisce l'evento OnKeyDown }
procedure TForm1.TavolozzaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{ assegna a F7 il pulsante di uscita }
if Key = VK_F7 then SBEsciClick(Self);
{ assegna a F11 il pulsante della finestra informazioni }
if Key = VK_F11 then SBAboutClick(Self);
{ assegna a F1 il pulsante dell'Help in linea }
if Key = VK_F1 then SBAiutoClick(Self);
end;
{ gestisce il click sul pulsante SBAiuto }
procedure TForm1.SBAiutoClick(Sender: TObject);
begin
{ apre l'aiuto in linea }
Application.HelpCommand(HELP_CONTENTS, 0);
end;
{ gestisce il click sul pulsante SBAbout }
procedure TForm1.SBAboutClick(Sender: TObject);
begin
{ apre la finestra (modale)Informazioni }
Informazioni.ShowModal;
end;
{ gestisce il click sul pulsante SBEsci }
procedure TForm1.SBEsciClick(Sender: TObject);
begin
{ se l'aiuto in linea è aperto lo chiude prima di uscire dal programma }
Application.HelpCommand(HELP_QUIT, 0);
{ chiude }
Close;
end;
end.
unit UInformazioni;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TInformazioni = class(TForm)
Image1: TImage;
LProdotto: TLabel;
DProdotto: TLabel;
LVersione: TLabel;
LCopyright: TLabel;
Label5: TLabel;
InfoOK: TButton;
DVersione: TLabel;
DCopyright: TLabel;
DData: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InfoOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Informazioni: TInformazioni;
implementation
uses TavolozzaU;
{$R *.DFM}
{ gestisce l'evento OnCreate }
procedure TInformazioni.FormCreate(Sender: TObject);
begin
{ adatta la dimensione della finestra in base alla dimensione dei
caratteri utilizzati da Windows
N.B. l'applicazione è stata sviluppata a 1024x768 - 120 dpi }
{ se i caratteri sono 96 dpi... } // caratteri piccoli di windows
if Screen.PixelsPerInch = 96
{ ...ridimensiona la finestra }
then
begin
Informazioni.Width := 320;
Informazioni.Height :=270;
end;
end;
{ viene eseguito alla visualizzazione }
procedure TInformazioni.FormShow(Sender: TObject);
begin
Top := Form1.Top +
(Form1.Height - Informazioni.Height) div 2;
Left := Form1.Left +
(Form1.Width - Informazioni.Width) div 2;
end;
{ gestisce il click su OK (o il tasto Invio) }
procedure TInformazioni.InfoOKClick(Sender: TObject);
begin
{ chiude }
Close;
end;
end.
 |