Delphi(forms) to Delphi(win32 API)


  • QA Engineer

    There's a pretty simple code for Delphi7 using standard forms. We need to transfer this code to Win32 API without using standard libraries and forms. Show me how it's done. Or if it's all quick, you can write it.

    unit RGB;
    

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls;

    type
    TForm1 = class(TForm)
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    Edit1: TEdit;
    ScrollBar3: TScrollBar;
    Edit2: TEdit;
    Edit3: TEdit;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
    procedure ScrollBar3Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    function RGBToColor(R, G, B: Byte): TColor;
    begin
    Result := B shl 16 or G shl 8 or R;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ScrollBar1.Position:=StrToInt(Edit1.Text);
    ScrollBar2.Position:=StrToInt(Edit2.Text);
    ScrollBar3.Position:=StrToInt(Edit3.Text);

    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    

    end;

    procedure TForm1.ScrollBar1Change(Sender: TObject);
    begin
    Edit1.Text:=IntToStr(ScrollBar1.Position);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    procedure TForm1.ScrollBar2Change(Sender: TObject);
    begin
    Edit2.Text:=IntToStr(ScrollBar2.Position);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    procedure TForm1.ScrollBar3Change(Sender: TObject);
    begin
    Edit3.Text:=IntToStr(ScrollBar3.Position);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    case Key of
    '0'..'9': ; // цифра
    #8 : ; // клавиша <Back Space>
    #13 : Edit2.SetFocus ; // клавиша <Enter>, переводим фокус на второй Edit
    // остальные символы — запрещены
    else Key :=Chr(0);
    end;
    if (Edit1.Text<>'') then
    ScrollBar1.Position:=StrToInt(Edit1.Text);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
    case Key of
    '0'..'9': ; // цифра
    #8 : ; // клавиша <Back Space>
    #13 : Edit3.SetFocus ; // клавиша <Enter>, переводим фокус на второй Edit
    // остальные символы — запрещены
    else Key :=Chr(0);
    end;
    if (Edit2.Text<>'') then
    ScrollBar2.Position:=StrToInt(Edit2.Text);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
    begin
    case Key of
    '0'..'9': ; // цифра
    #8 : ; // клавиша <Back Space>
    #13 : Edit1.SetFocus ; // клавиша <Enter>, переводим фокус на второй Edit
    // остальные символы — запрещены
    else Key :=Chr(0);
    end;
    if (Edit3.Text<>'') then
    ScrollBar3.Position:=StrToInt(Edit3.Text);
    Panel1.Color:=RGBToColor(ScrollBar1.Position, ScrollBar2.Position, ScrollBar3.Position);
    end;

    end.



  • Create a window with help CreateWindow(Ex)to process messages inside the window function.

    https://stackoverflow.com/questions/10180016/creating-forms-without-using-vcl with the creation of subsidiary elements.



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2