Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перевести компонент с 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]

Есть такой код...

И этот код уже на Паскале. Куда его еще переводить?


Наверх

Титульная страница Поиск, карта сайта Написать письмо