Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
ВнизКак перевести компонент с API на Pascal(delphi)? Найти похожие ветки
← →
Нулевой © (2006-02-07 11:14) [0]Есть такой код...
procedure TForm1.FormCreate(Sender: TObject);
begin
Btns[0] := CreateWindowEx(0, "button", "BS_PUSHUTTON", BS_PUSHBUTTON or BS_FLAT
or WS_CHILD or WS_VISIBLE or WS_TABSTOP, 10, 10, 150, 25, Handle, 0,
hinstance, nil);
Btns[1] := CreateWindowEx(0, "button", "BS_DEFPUSHUTTON", BS_DEFPUSHBUTTON or
BS_FLAT or WS_CHILD or WS_VISIBLE, 10, 40, 150, 25, Handle, 0, hinstance,
nil);
Btns[2] := CreateWindowEx(0, "button", "BS_AUTOCHECKBOX", BS_AUTOCHECKBOX or
BS_FLAT or WS_CHILD or WS_VISIBLE, 10, 70, 150, 25, Handle, 0, hinstance,
nil);
Btns[3] := CreateWindowEx(0, "button", "BS_AUTORADIOBUTTON", BS_AUTORADIOBUTTON
or BS_FLAT or WS_CHILD or ws_visible, 10, 100, 150, 25, Handle, 0,
hinstance, nil);
Btns[4] := CreateWindowEx(0, "button", "BS_GROUPBOX", BS_GROUPBOX or BS_FLAT
or WS_CHILD or WS_VISIBLE, 10, 130, 150, 35, Handle, 0, hinstance, nil);
Btns[5] := CreateWindowEx(0, "button", "BS_AUTO3STATE", BS_AUTO3STATE or
WS_CHILD or WS_VISIBLE, 10, 170, 150, 25, Handle, 0, hinstance, nil);
end;
Как эти комопнеты сделать на delphi?
Помогите куда копать...!!!
Вид компонетнт важен, может есть готовые? (eMule).
Спасибо.
← →
Reindeer Moss Eater © (2006-02-07 11:19) [1]Есть такой код...
И этот код уже на Паскале. Куда его еще переводить?
← →
Нулевой © (2006-02-07 11:29) [2]Да...
Но мне нужно написать эти компоненты, установить их в delphi.
Можно ли использовать стандартные, изменив (или добавить) их свойство BS_PUSHBUTTON or BS_FLAT? Нужен такой вид, как в коде выше.
Выражаюсь криво, простите!!!
← →
Гошик Кувшинов (2006-02-07 11:31) [3]стандартными компонентами такое не сделаешь. ищи кнопки на торри или ещё где, таких полно
← →
Gero © (2006-02-07 11:31) [4]Перекрывай CreateParams у TButton.
← →
Нулевой © (2006-02-07 11:42) [5]Написал так:
unit FltButton;
interface
uses
SysUtils, Classes, Controls, StdCtrls;
type
TFltButton = class(TButton)
private
{ Private declarations }
FFlat: boolean;
procedure SetFlat(const Value: boolean);
protected
{ Protected declarations }
procedure CreateParams(Params: TCreateParams); override;
public
{ Public declarations }
published
{ Published declarations }
property Flat: boolean read FFlat write SetFlat default False;
end;
procedure Register;
implementation
procedure TFltButton.CreateParams(Params: TCreateParams);
begin
inherited;
if FFlat then
Params.Style := Params.Style or BS_FLAT
end;
procedure TFltButton.SetFlat(const Value: boolean);
begin
if FFlat <> Value then
begin
FFlat := Value;
RecreateWnd;
end
end;
procedure Register;
begin
RegisterComponents("Samples", [TFltButton]);
end;
end.
Добавил в пакет... Ругается:
[Error] FltButton.pas(16): Declaration of "CreateParams" differs from previous declaration
[Error] FltButton.pas(31): Incompatible types
[Error] FltButton.pas(33): Undeclared identifier: "BS_FLAT"
[Warning] FltButton.pas(34): Combining signed and unsigned types - widened both operands
[Fatal Error] Package1.dpk(32): Could not compile used unit "FltButton.pas"
Подскажите что добавить в пакет?
← →
Нулевой © (2006-02-07 11:48) [6]в uses windows - добавил...
← →
Нулевой © (2006-02-07 11:55) [7]Изменил:
procedure TFltButton.CreateParams(Params: TCreateParams);
begin
inherited CreateParams(Params);
if FFlat then
Params.Style := Params.Style or BS_PUSHBUTTON or BS_FLAT
end;
Осталась ругань:
[Error] FltButton.pas(16): Declaration of "CreateParams" differs from previous declaration
Как побороть, помогите!?
Спасибо.
← →
Рамиль © (2006-02-07 11:58) [8]procedure CreateParams(var Params: TCreateParams); override;
← →
Zeqfreed © (2006-02-07 11:59) [9]
> Как побороть, помогите!?
Прочитать и осмыслить текст ошибки.Hint:
Params — это var-параметр в базовом классе.
← →
Нулевой © (2006-02-07 12:00) [10]Большое всем спасибо, сделал!!!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c