![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Unconnected |
![]() ![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Допустим,нужно много копий одного компонента и возможность обращения к свойствам любого из них. Как это можно реализовать?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Что именно тебя смущает? Что это массив компонентов? Напрасно: "DRKB -> VCL -> TEdit, TSpinEdit -> Массив Edit-компонентов" приведен пример использования таких массивов.
|
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
При использовании такого метода получается, что все Edit'ы уже должны находиться на форме, так? А мне нужно, чтобы было много компонентов без помещения их на форму... Конкретно icqclient.
mas3:array[1..m] of ticqclient; Я сначала попробовал так, но при обращении к элементу, например mas3[4].login вылетает ошибка Acsess Violation. Хотя просто icqcliet1.login всё нормально.. Сообщение отредактировано: Unconnected - 26.01.2009 14:44 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Я сначала попробовал так, но при обращении к элементу, например mas3[4].login вылетает ошибка Acsess Violation. Хотя просто icqcliet1.login всё нормально.. Просто icqclient1 у тебя лежит на форме, то есть, конструктор его тебе (вручную) вызывать не надо. Если же у тебя массив компонентов, НЕ присутствующих на форме - то перед обращением к методу требуется вызвать конструктор (что там у TIcqClient за конструктор? Create?)... Что-то вродеmas3[4].Create(nil); // Ну, или как там конструктор называется... |
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Сделал в цикле:
for z:=1 to i do И опять Acsess Violation..Показывает на строку с конструктором. Может, не Create, а ещё что-то, как узнать? Сообщение отредактировано: Unconnected - 26.01.2009 15:24 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#6
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Кстати, если просто написать TIcqClient.create(nil), то всё нормально..
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Блин... FPC-шная привычка... Не так, конечно, это не Дельфи-way... Вот так:
mas3[z] := TIcqClient.create(nil); |
Unconnected |
![]()
Сообщение
#8
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Спасибо!
![]() ![]() ![]() ![]() Сообщение отредактировано: Unconnected - 26.01.2009 16:24 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#9
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ещё проблема... На форме у нас компонента нет. А если, допустим, нужно обработать событие OnMessageRecv, что делать?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
В класс формы добавляешь свой обработчик:
procedure TForm1.myOnMessageRecv(Sender: TObject; Msg, UIN: String); и присваиваешь это событие конкретному экземпляру после Login: ... |
Unconnected |
![]()
Сообщение
#11
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Спасибо, работает
![]() -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#12
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Теперь возникла небольшая проблема, на коде
Код mas3[z].Onserverdisconnect:=myOnserverdisconnect; вылетает Incompatible types: 'Parameter lists differ'.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Как описывал myOnserverdisconnect покажи...
|
Unconnected |
![]()
Сообщение
#14
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Код Procedure MyOnserverdisconnect(sender:TObject); Эта процедура описана в модуле главной формы, но вызывается из потока.. Код mas3[z].Onserverdisconnect:=form1.myOnserverdisconnect; Добавлено через 7 мин. Всё,я догадался,в чём проблема, описание MyOnServerdisconneсt не совпадало с описанием Onserverdisconnect в TIcqClient. Надо было так: Код Procedure MyOnserverdisconnect(sender:TObject;Reason: Integer; Description: string); Сообщение отредактировано: Unconnected - 12.02.2009 19:23 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#15
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Стала возникать ошибка на строке
Код Procedure myonlogin(sender:tobject); в классе формы. Ошибка Цитата [Pascal Error] Unit1.pas(95): E2065 Unsatisfied forward or external declaration: 'TForm1.myonlogin' . Использую в Код mas3[z].OnLogIn := myOnLogIn; Код Procedure myonlogin(sender:TObject); begin ... end; Попробовал даже объявить новый класс и добавить обработчик туда, ошибка не исчезла.. Причём когда только добавил обработчик на событие - всё работало, а что потом произошло.. Сообщение отредактировано: Unconnected - 13.02.2009 21:06 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата Попробовал даже объявить новый класс и добавить обработчик туда, ошибка не исчезла.. Зачем новый класс? У тебя ж в сообщении об ошибке ясно сказано, что должно быть:Procedure TForm1.myonlogin(sender:TObject);, компилятор тебе говорит, что он не нашел реализации этого метода... |
Unconnected |
![]()
Сообщение
#17
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Благодарю,работает(как же блин всё просто оказывается)...
![]() Ещё один сопутствующий вопрос: в TIcqClient событие "насильственного" отключения от сервера(по инициативе сервера) - это OnServerDisconnect как я понял? Сообщение отредактировано: Unconnected - 13.02.2009 22:08 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Цитата событие "насильственного" отключения от сервера(по инициативе сервера) - это OnServerDisconnect Да, оно самое... |
Unconnected |
![]()
Сообщение
#19
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
А вот допустим если мне нужно узнать, находится ли мой номер в онлайне, можно сделать так:
if not(mas3[valid1[ab]].LoggedIn) then ... ? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Ну, откуда же я знаю, что такое у тебя valid1, например? Вообще принцип правильный, надо проверять поле LoggedIn...
|
![]() ![]() |
![]() |
Текстовая версия | 11.07.2025 5:31 |