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

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

Создание компонентов... [D7, WinXP]


Страницы:   1 2

maxProg ©   (2007-02-28 17:43:00) 

Не получается создать свой компонент. В этом деле новичок и для примера решил создать tbuttonsound (tbutton). Инсталировал и вроде всё ОК, но при создание нового приложения (формы) мой компонент исчезает.....!!!!!!!! ПОЧЕМУ?блин :(


RASkov   (2007-03-07 00:52:00) [1]

> [25] Loginov Dmitry ©   (06.03.07 07:53)

Точно!
Садись - пять. :)


Loginov Dmitry   (2007-03-06 07:53:00) [2]

> А я уж подумал, что и впраду что-то серьезное....:)


Лишний код - это:

procedure TMySoundButton.SetDuration(const Value: Cardinal);
begin
  if Value<>FDuration thenFDuration:=Value;
end;


Часто подобные проверки делают для ускорения работы программы. Здесь во всех случаях получится только замедление (ну никак не ускорение) из-за необходимости выполнения бессмысленной проверки.


RASkov   (2007-03-06 01:56:00) [3]

> [22] GrayFace ©   (05.03.07 20:54)

А я уж подумал, что и впраду что-то серьезное....:)

Зато можно ограничить(проверить на "правильность"), например, длительность сигнала
procedure TMySoundButton.SetDuration(const Value: Cardinal);
begin
 if Value>1000 then ...(дофига)....
 else if Value<>FDuration then FDuration:=Value;
end;


Но здесь, наверное, уместнее делать так:
(Ограничение "ручного" изменения свойства)

type
 TDuration = 1..1000;

 TMySoundButton = class(TButton)
 private
   FFrequency: Cardinal;
   FDuration: TDuration;
....
 published
....
   property Duration: TDuration read FDuration write FDuration default 20;
 end;


От "программного" - лучше всетаки SetXXXX


> [23] Belorus ©   (06.03.07 00:16)

Во загнул :)


Belorus   (2007-03-06 00:16:00) [4]

> Да просто лишний код. Вместо write FFrequency.

Ничё ты в моде не понимаешь.

function SetRepeatState(State : Boolean): Boolean;
begin
 Result:=True;
 If State<>FState then
 begin
   If State=True then FState:=True else
   If State=False then FState:=False else
   If (State<>True)and(Fstate<>False) then Showmessage('Я индус, и работаю в Редмонде');
 end else Result:=False;
end;


GrayFace   (2007-03-05 20:54:00) [5]

Да просто лишний код. Вместо write FFrequency.


RASkov   (2007-03-05 01:57:00) [6]

> [20] GrayFace ©   (04.03.07 19:09)

А что не так? Чесное слово не понял :(


GrayFace   (2007-03-04 19:09:00) [7]

RASkov   (03.03.07 1:56) [15]
procedure TMySoundButton.SetFrequency(const Value: Cardinal);
begin
if Value<>FFrequency then FFrequency:=Value;
end;

procedure TMySoundButton.SetDuration(const Value: Cardinal);
begin
if Value<>FDuration then FDuration:=Value;
end;

Гы. Как же ты так?

maxProg ©   (04.03.07 10:50) [17]
Ещё вопрос -> где можно узнать о создании компонентов?

Я начал создавать компоненты с модификации модуля Spin.pas  А вообще, дело хорошее - приучает в исходники смотреть.


GeLLeR   (2007-03-04 12:46:00) [8]

GeLLeR ©   (04.03.07 12:45) [18]
Може ещё гденить


GeLLeR   (2007-03-04 12:45:00) [9]

>>Ещё вопрос -> где можно узнать о создании компонентов?
В гугле. На сайте torry.net


maxProg   (2007-03-04 10:50:00) [10]

Ещё вопрос -> где можно узнать о создании компонентов?


maxProg   (2007-03-04 10:36:00) [11]

Спасибо всем за помощь!!!!


RASkov   (2007-03-03 01:56:00) [12]

unit SoundButton;

interface

uses
Windows, SysUtils, Classes, Controls, StdCtrls;

type
TMySoundButton = class(TButton)
private
  FFrequency: Cardinal;
  FDuration: Cardinal;
  procedure SetFrequency(const Value: Cardinal);
  procedure SetDuration(const Value: Cardinal);
  { Private declarations }
protected
  { Protected declarations }
public
  constructor Create(AOwner: TComponent); override;
  procedure Click; override;  
  { Public declarations }
published
  { Published declarations }
  property Frequency: Cardinal read FFrequency write SetFrequency default 1000;
  property Duration: Cardinal read FDuration write SetDuration default 20;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TMySoundButton]);
end;

constructor TMySoundButton.Create(AOwner: TComponent);
begin
 inherited;
 FFrequency:=1000;
 FDuration:=20;
end;

procedure TMySoundButton.SetFrequency(const Value: Cardinal);
begin
 if Value<>FFrequency then FFrequency:=Value;
end;

procedure TMySoundButton.SetDuration(const Value: Cardinal);
begin
 if Value<>FDuration then FDuration:=Value;
end;

procedure TMySoundButton.Click;
begin
 inherited;
 Windows.Beep(FFrequency, FDuration);
end;

end.

Набирал прямо здесь, возможны ошибки...


RASkov   (2007-03-03 01:37:00) [13]

> [13] maxProg ©   (03.03.07 00:22)

Q поубирай...


maxProg   (2007-03-03 00:22:00) [14]

Как создать "нормальный" компонент?


RASkov   (2007-03-02 19:18:00) [15]

> [11] maxProg ©   (02.03.07 18:09)

Дык ты его создал для CLX Application....
Elen была права ....


maxProg   (2007-03-02 18:09:00) [16]

Короче, текст кнопки....

unit QButtonSound;

interface

uses
 SysUtils, Classes, QControls, QStdCtrls;

type
 TButtonSound = class(TButton)
 private
   { Private declarations }
 protected
   { Protected declarations }
 public
   { Public declarations }
 published
   { Published declarations }
     procedure Click; override;
 end;

procedure Register;

implementation

procedure TButtonSound.Click;
begin
 Beep;
end;

procedure Register;
begin
 RegisterComponents('Standard', [TButtonSound]);
end;

end.

.....
При инсталяции компонента форма исчезает, но компонент отображается, после создания нового приложения, или вкл. отображения формы он пропадает навсегда...но отображается в COMPONENT/CONFIGURE PALETTE
......


Elen   (2007-03-02 12:40:00) [17]

Я имею ввиду на базе QStdCtrls


Elen   (2007-03-02 12:39:00) [18]


> Ты этим постом не пояснил, а еще больше запутал.

А мне кажется что он сделал свой компонент на основе CLX. Поэтому и может пропадать.


RASkov   (2007-03-02 12:32:00) [19]

> [5] maxProg ©   (02.03.07 00:25)

Ты этим постом не пояснил, а еще больше запутал... :(


Аноним   (2007-03-02 10:33:00) [20]


> но при создание нового приложения (формы)


так приложения или формы?

> но в св-вах он как бы есть...


В свойствах чего? Что значит "как бы"?

ничего не понятно


Страницы:   1 2

Наверх

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