Вопрос № 53009: Здравствуйте, эксперты!
Вопрос такого типа.
Есть на форме компонет TPanel, например. Есть отдельно dll-ка (допустим это будет плагин), которая имеет функцию DrawMyComponents.
Как мне сделать так, что эта функция могла свои компоненты...Вопрос № 53037: Здравствуйте, уважаемые эксперты! Я недавно начала работать в Delphi. У меня есть две формы. Первая форма предназначена для регистрации пользователя. Мне нужно чтобы переменные первой формы были доступны при работе со второй формой. Имя пользователя ...Вопрос № 53064: Как поместить в переменную типа TShortCut (который суть псевдоним типа Word)
собственную комбинацию клавиш ПРОГРАММНО. Особенно интересно поместить туда комбинацию вроде "Ctrl+стрелка влево/вправо/вверх/вниз/page Up/page down/Home/End". Спа...
Вопрос № 53.009
Здравствуйте, эксперты!
Вопрос такого типа.
Есть на форме компонет TPanel, например. Есть отдельно dll-ка (допустим это будет плагин), которая имеет функцию DrawMyComponents.
Как мне сделать так, что эта функция могла свои компоненты разместить на TPanel главного приложения? Какие необходимые параметры нужно передать функции?
Отвечает: Mexes
Здравствуйте, TR da Alien!
Если передать параметром Panel:TPanel, то для создания контролы на ней можно создавать так:
...
Control:=TControl.Create(Panel); //TLabel, TButton, TCheckBox и т. д.
Control.Parent:=Panel; //Размещаем на панели
...
Не знаю специфики проекта, но установив владельца равным Panel (TControl.Create(Panel)), компонент будет уничтожаться с уничтожением панели.
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 23.08.2006, 14:35 Оценка за ответ: 2 Комментарий оценки: А как корректно это сделать из библиотеки? Есть рабочий пример?
Отвечает: Татьяна
Здравствуйте, TR da Alien!
В принципе достаточно передавать только handle панели, тогда чтобы расположить элементы на панели, достаточно просто задать этим элементам родителя,
setParent(elementhandle,panelhandle);
это апи, т.е. находится она в модуле windows
Однако, есть нюанс, т.е. например не будет работать свойство autosize панели и некоторые другие.
Это происходит из-за того, что панель не будет видеть их как дочерние контролы.
Но если вам надо только расположить, однозначно handle достаточно
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 23.08.2006, 20:48 Оценка за ответ: 4 Комментарий оценки: Спасибо. Но все равно у меня не получается заставить их корректно работать из длл. :(
Вопрос № 53.037
Здравствуйте, уважаемые эксперты! Я недавно начала работать в Delphi. У меня есть две формы. Первая форма предназначена для регистрации пользователя. Мне нужно чтобы переменные первой формы были доступны при работе со второй формой. Имя пользователя при регистрации заносится в тип User, который объявлен и для первой и для второй формы. Когда пользователь вводит свое имя в первой форме оно записывается в поле User.Name, а когда я начинаю работать во второй форме с этим типом, то поле User.Name пустое. Почему?
Отправлен: 23.08.2006, 16:33
Вопрос задала: KInika (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Coupler
Здравствуйте, KInika!
Объявите переменную типа user в секции public 1 формы и вызывайте ее из 2 формы примерно так: form1.user1.name
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 23.08.2006, 17:20 Оценка за ответ: 5
Отвечает: DeVampir
Здравствуйте, KInika!
Что значит "заносится в тип User"? Данные должны храниться в переменных! Для этого достаточно описать тип только в одной форме и обращаться к переменной этого типа через имя нужной формы. Т.е. если у вас форма регистрации называется RegDialog, то обращаться к нужным данным можно так RegDialog.User.Name Естественно переменная с данными будет доступна только тогда, когда форма существует
Удачи!
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 2-ой класс)
Ответ отправлен: 24.08.2006, 06:43 Оценка за ответ: 4
Вопрос № 53.064
Как поместить в переменную типа TShortCut (который суть псевдоним типа Word) собственную комбинацию клавиш ПРОГРАММНО. Особенно интересно поместить туда комбинацию вроде "Ctrl+стрелка влево/вправо/вверх/вниз/page Up/page down/Home/End". Спасибо!
Отвечает: Mexes
Здравствуйте, Валерий Кравцов!
Через свойство ShortCut и одноименную функцию. Например, Ctrl+Вверх вот так:
Cmd.Shortcut:=ShortCut(VK_UP,[ssCtrl]);
Первый параметр функции - код клавиши (word), второй - множество типа TShiftState, в котором указать необходимые нажатые клавиши Shift, Alt, Ctrl или кнопки мыши (вот все возможные элементы: ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble).
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 23.08.2006, 21:02