![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перевести компонент с API на Pascal(delphi)? [D7, Win95/98, WinXP]
Нулевой © (2006-02-07 11:14:00)Есть такой код...
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).
Спасибо.
Нулевой (2006-02-07 12:00:00) [1]Большое всем спасибо, сделал!!!!!
Zeqfreed (2006-02-07 11:59:00) [2]
> Как побороть, помогите!?
Прочитать и осмыслить текст ошибки.
Hint:Params — это var-параметр в базовом классе.
Рамиль (2006-02-07 11:58:00) [3]procedure CreateParams( varParams: TCreateParams); override;
Нулевой (2006-02-07 11:55:00) [4]Изменил:
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:48:00) [5]в uses windows - добавил...
Нулевой (2006-02-07 11:42:00) [6]Написал так:
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:31:00) [7]стандартными компонентами такое не сделаешь. ищи кнопки на торри или ещё где, таких полно
Gero (2006-02-07 11:31:00) [8]Перекрывай CreateParams у TButton.
Нулевой (2006-02-07 11:29:00) [9]Да...
Но мне нужно написать эти компоненты, установить их в delphi.
Можно ли использовать стандартные, изменив (или добавить) их свойство BS_PUSHBUTTON or BS_FLAT? Нужен такой вид, как в коде выше.
Выражаюсь криво, простите!!!
Reindeer Moss Eater (2006-02-07 11:19:00) [10]Есть такой код...
И этот код уже на Паскале. Куда его еще переводить?