Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизСоздание компонентов... Найти похожие ветки
← →
maxProg © (2007-02-28 17:43) [0]Не получается создать свой компонент. В этом деле новичок и для примера решил создать tbuttonsound (tbutton). Инсталировал и вроде всё ОК, но при создание нового приложения (формы) мой компонент исчезает.....!!!!!!!! ПОЧЕМУ?блин :(
← →
RASkov (2007-02-28 18:02) [1]> [0] maxProg © (28.02.07 17:43)
ПОЧЕМУ?
Это у тебя надо спрасить. Ты ж его создал и только тебе известно, что ты там понаписал.
← →
maxProg © (2007-02-28 23:27) [2]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;
..........это всё..........
← →
RASkov (2007-02-28 23:51) [3]
type
TButtonSound = class(TButton)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure Click; override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure TButtonSound.Click;
begin
inherited;
Beep;
end;
Зачем метод Click вынес в паблишед?
← →
RASkov (2007-03-01 00:00) [4]> Инсталировал и вроде всё ОК, но при создание нового приложения
> (формы) мой компонент исчезает.....!!!!!!!! ПОЧЕМУ?блин
> :(
Более подробней напиши, как и куда он у тебя исчезает. Тот код который ты привел, криминально вроде бы ничего не содержит, и в том варианте который ты привел, тоже должен работать... т.е. исчезает он по другим причинам. имхо.
← →
maxProg © (2007-03-02 00:25) [5]просто пропадает с панели компонентов, но в св-вах он как бы есть...
← →
Kolan © (2007-03-02 09:51) [6]> procedure Register;
А где реализация этой процедуры?
← →
Аноним (2007-03-02 10:33) [7]
> но при создание нового приложения (формы)
так приложения или формы?
> но в св-вах он как бы есть...
В свойствах чего? Что значит "как бы"?
ничего не понятно
← →
RASkov (2007-03-02 12:32) [8]> [5] maxProg © (02.03.07 00:25)
Ты этим постом не пояснил, а еще больше запутал... :(
← →
Elen © (2007-03-02 12:39) [9]
> Ты этим постом не пояснил, а еще больше запутал.
А мне кажется что он сделал свой компонент на основе CLX. Поэтому и может пропадать.
← →
Elen © (2007-03-02 12:40) [10]Я имею ввиду на базе QStdCtrls
← →
maxProg © (2007-03-02 18:09) [11]Короче, текст кнопки....
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
......
← →
RASkov (2007-03-02 19:18) [12]> [11] maxProg © (02.03.07 18:09)
Дык ты его создал для CLX Application....
Elen была права ....
← →
maxProg © (2007-03-03 00:22) [13]Как создать "нормальный" компонент?
← →
RASkov (2007-03-03 01:37) [14]> [13] maxProg © (03.03.07 00:22)
Q поубирай...
← →
RASkov (2007-03-03 01:56) [15]
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.
Набирал прямо здесь, возможны ошибки...
← →
maxProg © (2007-03-04 10:36) [16]Спасибо всем за помощь!!!!
← →
maxProg © (2007-03-04 10:50) [17]Ещё вопрос -> где можно узнать о создании компонентов?
← →
GeLLeR © (2007-03-04 12:45) [18]>>Ещё вопрос -> где можно узнать о создании компонентов?
В гугле. На сайте torry.net
← →
GeLLeR © (2007-03-04 12:46) [19]GeLLeR © (04.03.07 12:45) [18]
Може ещё гденить
← →
GrayFace © (2007-03-04 19:09) [20]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 А вообще, дело хорошее - приучает в исходники смотреть.
← →
RASkov (2007-03-05 01:57) [21]> [20] GrayFace © (04.03.07 19:09)
А что не так? Чесное слово не понял :(
← →
GrayFace © (2007-03-05 20:54) [22]Да просто лишний код. Вместо write FFrequency.
← →
Belorus © (2007-03-06 00:16) [23]> Да просто лишний код. Вместо 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;
← →
RASkov (2007-03-06 01:56) [24]> [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)
Во загнул :)
← →
Loginov Dmitry © (2007-03-06 07:53) [25]> А я уж подумал, что и впраду что-то серьезное....:)
Лишний код - это:procedure TMySoundButton.SetDuration(const Value: Cardinal);
begin
if Value<>FDuration then FDuration:=Value;
end;
Часто подобные проверки делают для ускорения работы программы. Здесь во всех случаях получится только замедление (ну никак не ускорение) из-за необходимости выполнения бессмысленной проверки.
← →
RASkov (2007-03-07 00:52) [26]> [25] Loginov Dmitry © (06.03.07 07:53)
Точно!
Садись - пять. :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.051 c