|
Вопрос # 5 488/ вопрос решён / |
|
Попрошу ещё раз помощи, тут уже наверно ничего сложного, но я не знаю как:
Как передать параметр процедуре принадлежащей Form1 из фрейма, который лежит на этой же форме но в sFramebar'e.
в Unit1:
procedure CreateDirUser(dirName: string);
....
в Unit7:
procedure TFrame7.sButton1Click(Sender: TObject);
begin
Form1.CreateDirUser('1'); // - тут то и ругается
Вот и собственно вопрос, как из фрейма передать процедуре параметр, чтоб она его выполнила?
компилятор ругается примерно так:
Undeclared identifier: 'CreateDirUser'
......
и ещё с десяток других процедур, которые он не видит на главной форме
Delphi7, win7 x64
 |
Вопрос задал: Андрей_trico (статус: Посетитель)
Вопрос отправлен: 9 июля 2011, 18:01
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 12 июля 2011, 08:17; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 9 июля 2011, 18:36 [#1]:
uses Unit1; применял?
Фрейм-то находится в другом модуле.
Старый добрый паскаль, ёмаё...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Андрей_trico (статус: Посетитель), 9 июля 2011, 19:33 [#2]:
min@y™:
да, компилятор uses Unit1; сам соизволил прописать, сообщив об этом меседжем, но все равно останавливается на этой строчке Form1.CreateDirUser('1');
гуглил я, люди пишут как из формы в форму данные пересылать, тут тоже подошло бы, но мне не просто надо изменить какую-то глобальную переменную, а запустить процедуру передав ей параметр.
только не говорите что придётся в тело фрейма прописывать все свои дополнительные процедуры(((
|
|
min@y™ (статус: Доктор наук), 9 июля 2011, 19:41 [#3]:
А может у тебя процедура CreateDirUser() не прописана в секции interface в unit1?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Андрей_trico (статус: Посетитель), 10 июля 2011, 01:06 [#4]:
Да, действительно, после объявления процедур в interface они стали видимы, но как-то я их криво прописал, пишет ошибку:
[Error] Unit1.pas(77): Unsatisfied forward or external declaration: 'TForm1.CreateDirUser'
а прописал я так:
procedure CreateDirUser(dirName: string );
если в скобках написать сендер ту обджект, то опять ругается на использование процедур в теле программы.
процедуры стали видны на всех фреймах, оч благодарен, но как же их прописать правильно, чтоб компилятор пропустил?
ругается оно на строчке объявления процедуры в Unit1.
|
|
Gooddy (статус: 3-ий класс), 10 июля 2011, 03:08 [#5]:
CreateDirUser не принадлежит объекту Form1!!!
Так надо писать:
type
TForm1 = class(TForm)
private
...
public
procedure CreateDirUser(dirName: string );
...
end;
...
procedure TForm1.CreateDirUser(dirName: string);
begin
...
end;
Вуаля.
Чисти код! Чисти код! Чисти код!
|
|
Андрей_trico (статус: Посетитель), 10 июля 2011, 11:32 [#6]:
Ура! заработало! спасибо народ! Через класс первой формы пропустило)
|
10 июля 2011, 11:36: Статус вопроса изменён на решённый (изменил автор вопроса — Андрей_trico): Спасибо Всем за участие, вопрос решён. Функции нужно было объявлять через класс первой формы.
|
Андрей_trico (статус: Посетитель), 10 июля 2011, 13:11 [#7]:
блин, на ровном месте, просто раньше не использовал фреймбар, теперь куча вопросов))
на этом самом фрейме7, который вкручен во фреймбар, есть комбобокс. я не могу теперь к нему обратиться.
procedure TForm1.sFrameBar1Items1CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TFrame7.Create(nil); // при раскрывании кнопки фреймбара прикручивается ранее созданный фрейм7
Frame.Repaint;
sComboBox1.Items.Add('...') // вот тут опять ошибка
опять я застрял((
|
|
min@y™ (статус: Доктор наук), 10 июля 2011, 13:16 [#8]:
Цитата (Андрей_trico):
опять я застрял((
Ты застрял, потому что знаешь о программировании меньше, чем нихрена. Прочитал 0 книжек. А зря... Отсюда и дебильные вопросы, которые решаются спинным мозгом.
sComboBox1 где находится-то?
Цитата (Андрей_trico):
// вот тут опять ошибка
Какая ошибка-то? Телепатор за неуплату отключили.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Андрей_trico (статус: Посетитель), 10 июля 2011, 22:03 [#9]:
ели бы все всё знали, то не было бы этого топика, как и этого форума в целом)) и если бы я был по профессии программист, то наверно не задавал бы таких простых вопросов))
если вы, min@y™: , много знаете, то поделитесь знаниями - буду признателен.
в данной ситуации компилятор выдаёт следующее:
[Error] Unit1.pas(2408): Undeclared identifier: 'sComboBox1'
поясню - это при попытке из Form1 программно заполнить комбобокс расположенный на Frame7
procedure TForm1.sFrameBar1Items1CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
begin
Frame := TFrame7.Create(nil);
Frame.Repaint;
Frame.sComboBox1.Items.Add('....'); // тут остановился компилятор с выше указанной ошибкой
он просто не видит комбика, как будто его просто нет. перевернул я много форумов, теперь только каша в голове((
|
|
Андрей_trico (статус: Посетитель), 10 июля 2011, 22:07 [#10]:
дело в том, что в пределах одной формы программа уже полностью работоспособна и функциональна, нужно теперь всё расположить красиво, а вот с фреймами засада получилась((
|
|
min@y™ (статус: Доктор наук), 11 июля 2011, 08:22 [#11]:
Ёмаё, но вот посмотри, какой тип у тебя имеет переменная Frame. Это TCustomFrame, видишь? А на TCustomFrame нету никаких комбобоксов!
procedure TForm1.sFrameBar1Items1CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TFrame7.Create(nil); // <--- почему nil, а не Application?
with TFrame7(Frame) do
begin
Repaint(); // <--- нахрена это вообще?
sComboBox1.Items.Add('Я пойду в енторнет и скачаю книжку по delphi.');
end;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Андрей_trico (статус: Посетитель), 12 июля 2011, 01:10 [#12]:
Ребят, спасибо Вам всем за участие! Минай - спасибо за правильную формулировку, теперь работает)
p.s.: Знания как и книги - приносят пользу если их не прячут).
Да, и на счёт книг по делфи, я не одну прочитал, просто то что читал не всегда понимал полностью, ведь никто не объяснял.
|
|
min@y™ (статус: Доктор наук), 12 июля 2011, 08:17 [#13]:
Цитата (Андрей_trico):
Да, и на счёт книг по делфи, я не одну прочитал
НЕ ВЕРЮ! (© Станиславкий)
Цитата (Андрей_trico):
просто то что читал не всегда понимал полностью, ведь никто не объяснял.
Когда я учился, интернета не было. У меня была одна единственная драная книжка по турбопаскалю. И ничего. Пока я заканчивал 2-й курс, моими прогами уже весь универ пользовался. И мне тоже никто нихрена не объяснял.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|