Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Внизошибка присоздании Найти похожие ветки
← →
Steep © (2007-04-20 11:55) [0]Еще вот какая бага выскочила...
в одном юните работает в другом ругается...Type
TPathButton = class(TSpeedButton)
public
PathArray: Array[1..5] of String;
end;procedure RegLoadButton(Sender: TObject; Count: integer; Hint: string; ArrayPath: array of string);
var
i, k: Integer;
ico: TIcon;
btn: TPathButton;
begin
with TRegistry.Create do
try
RootKey := HKEY_CURRENT_USER;
// RootKey := HKEY_LOCAL_MACHINE;
if OpenKey("\SOFTWARE\SteepSoft\RunPanel\button"+IntToStr(Count)+"\", false) then
begin
For k:=0 to ReadInteger("FBC") do
begin
btn := TPathButton.Create(Self); //!!!!ЗДесь ругается!!!......
With btn do
begin
//Открытие и заливание иконки
Parent := Frm_RunPanel.ScrollBox1;
SetBounds( 1, (32*k)+(1*(k+1)), 32, 32 );
..................
OnClick := FastButtonClick;
end;
end;
CloseKey;
end;
finally
Free;
end;
end;
Ошибка такая:
[Pascal Error] PanelUnit.pas(210): E2003 Undeclared identifier: "Self"
← →
trubin © (2007-04-20 11:57) [1]В каком работает?
В каком ругается?
← →
clickmaker © (2007-04-20 11:59) [2]в Self передается неявно указатель на экземпляр класса в методе класса.
А у тебя это разве метод класса?
← →
Steep © (2007-04-20 12:00) [3]Просто переношу некоторые дествия в другой юнит...
Возникают какие-то непонятные траблы...
>В каком работает?
>В каком ругается?
что весь юнит переписывать?
← →
_Аноним (2007-04-20 12:00) [4]
> Undeclared identifier: "Self"
Еще бы.
Ты же вызываешь из обычной процедуры, в ней нет никакого Self
Self актуален ,когда мы находимся в теле методе
← →
Steep © (2007-04-20 12:01) [5]а что тогда писать??
да действительно - там был клик по кнопке...
← →
trubin © (2007-04-20 12:02) [6]
> что весь юнит переписывать?
Весь не надо.
Как написано в [2] в методе класса он ругаться не будет, а тут у тебя свободная процедура
← →
trubin © (2007-04-20 12:05) [7]
> а что тогда писать??
Можно:
btn := TPathButton.Create(application);
в юните должна быть ссылка на юнит Forms
← →
ЮЮ © (2007-04-20 12:12) [8]>Просто переношу некоторые дествия в другой юнит...
сначала подумай, на кой вообще в этом модуле нужна будет эта процедура?
Дальше тебя ждут грабли в
OnClick := FastButtonClick;
← →
Steep © (2007-04-20 12:25) [9]>btn := TPathButton.Create(application);
Пасип вроде не ругается
← →
Steep © (2007-04-20 13:23) [10]ЮЮ
ты был прав насчет
> Дальше тебя ждут грабли в OnClick := FastButtonClick;
....
← →
Ega23 © (2007-04-20 13:35) [11]
>
> Можно:
> btn := TPathButton.Create(application);
А почему application?
← →
trubin © (2007-04-20 13:37) [12]http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=342
Прочитай статью, может поможет, а лучше внимательно прочитай какую-нибудь книжку по Delphi для начального уровня.
← →
Ega23 © (2007-04-20 13:42) [13]
> Прочитай статью, может поможет, а лучше внимательно прочитай
> какую-нибудь книжку по Delphi для начального уровня.
гггг :)
Упалпацтул.
Так всё-таки, ты не ответил на конкретный вопрос: почему Application? Почему не nil, не panel или что-нибудь ещё?
← →
trubin © (2007-04-20 13:42) [14]
> А почему application?
Понятно, что лучше туда передать форму на которой кнопка лежит ;) , но раз уж человек реакцию на щелчок по кнопке в свободную процедуру пишет, то ... все равно.
← →
trubin © (2007-04-20 13:44) [15]to Ega23 пост [12] не тебе писал
← →
Steep © (2007-04-20 13:45) [16]
> то ... все равно.
Мне пока абсолютно все равно :) главное чтоб работало ;)
Не силен пока я в этих self, parent, sender....
← →
Плохиш © (2007-04-20 13:46) [17]
> trubin © (20.04.07 13:37) [12]
> http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=342
Нажал на ссылку, долго плякал...
> trubin © (20.04.07 13:42) [14]
Стесняюсь спросить, а можно (шёпотом) я туда нил поставлю?
← →
Ega23 © (2007-04-20 13:46) [18]
> Понятно, что лучше туда передать форму на которой кнопка
> лежит ;)
Почему форму? Чем лучше?
И почему это я не могу реакцию на щелчок по кнопке в свободную процедуру написать? А потом её к TMethod привести и назначить в качеств обработчика?
Ты прежде чем что-либо постить сначала думай. А лучше внимательно прочитай какую-нибудь книжку по Delphi для начального уровня. Ну для среднего - уже точно пора почитать.
← →
trubin © (2007-04-20 13:59) [19]
> Почему форму? Чем лучше?
> И почему это я не могу реакцию на щелчок по кнопке в свободную
> процедуру написать? А потом её к TMethod привести и назначить
> в качеств обработчика?
Можно, можно, эту реакцию черт те знает куда засунуть, не спорю, зависит от обстоятельств, но в подавляющем большинстве случаев, это в методе класса делается, или с этим тоже спорить будешь?
Откуда я знаю, что у него за проект, может это 1 форма, и 3 кнопки.
Больше, я думаю спорить смысла нет, а то модератор по шапке стукнет, и будет прав.
← →
Ega23 © (2007-04-20 14:06) [20]
> но в подавляющем большинстве случаев, это в методе класса
> делается, или с этим тоже спорить будешь?
>
Я знаю только то, что в качестве обработчика может быть назначен только метод. А уж откуда он взялся - дело десятое.
Вот пожалуйста, небезопасный код:
function ShowTexLogFile(const aFileName:String):Boolean;
procedure BtnClearClick(Sender:TObject);
var
i:Integer;
_memo:TMemo;
begin
if (Sender is TForm) then
begin
With TForm(Sender) do
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TMemo) then
if UpperCase(TMemo(Components[i]).Name)=UpperCase("memSQLLogMonitor") then
begin
_memo:=TMemo(Components[i]);
_memo.Lines.Clear;
_memo.Lines.Add(" ");
_memo.Lines.SaveToFile(_memo.Hint);
Break;
end;
end;//With TForm(Sender) do
end;//if (Sender is TForm) then
end;//procedure BtnClearClick(
var
aForm:TForm;
aPanel:TPanel;
OnClearClick:TMethod;
.....
begin
Result:=False;
//if not FileExists(aFileName) then Exit;
try
........
With TButton.Create(aPanel) do
begin
Parent:=aPanel;
Height:=25;
Width:=100;
Font.Size:=10;
Top:=10; //aPanel.ClientHeight-30;
Left:=aPanel.Width-220;
Anchors:=[akTop, akRight];
Caption:="Очистить";
OnClearClick.Code:=@BtnClearClick;
OnClearClick.Data:=aForm;
OnClick:=TNotifyEvent(OnClearClick);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.061 c