Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1139747390
Kot_
2006-02-12 15:29
2006.02.26
Работа с датой


15-1139089526
lookin
2006-02-05 00:45
2006.02.26
Не могу понять, в чем смысл фразы (на английском)...


4-1133374095
dimka_sh
2005-11-30 21:08
2006.02.26
Окно на несколько секунд


15-1139235738
oldman
2006-02-06 17:22
2006.02.26
И кому оно все надо? (взгрустнулось...)


2-1139359780
rosl
2006-02-08 03:49
2006.02.26
ehlib





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский