Codice

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.