Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 747
от 07.03.2007, 21:13

Администратор:Калашников О.А.
В рассылке:Подписчиков: 439, Экспертов: 48
В номере:Вопросов: 12, Ответов: 25


Вопрос № 76879: Здраствуйте господа эксперты. Возник вопрос. Требуется в StringGrid в определённую ячейку вставить ComboBox после выбора данных из комбобокса соответственно ввести эти данные в эту ячейку. И второй вопрос как определить координаты вы...
Вопрос № 76949: Добрый день! Помогите разобраться с проблемой?Нужно что бы EDITы в определённом диапазоне изменяли цвет(см.приложение). Edit27 цвет изменяет так как надо ,а другие Editы28,29 нехотят.В чем ошибка?...
Вопрос № 77039: Здравствуйте уважаемые эксперты! Помогите пожалуйста! как осуществить фильтрацию данных в ADOTable так как это осуществляется в BDE table ...
Вопрос № 77053: Здравствуйте! Код в приложении. Код не просто дубовый, а... Гм, ну да ладно... Так вот: про нажатии на T1, выделенному куску текста присваивается стиль Bold - Жирный(и только жирный, то, что было до него - уходит не попрощавшись), если нажать...
Вопрос № 77098: Добрый день! Подскажите, пожалуйста, как мне связать компонент OracleDataSet1 с первой формы с компонентом OracleSession1 другой формы. Спасибо за внимание!...
Вопрос № 77175: Уважаемые эксперты, объясните пожалуйста!!! Никак не могу справиться с TreeView: 1. Как определить индекс и название элемента Item в ветке? 2. Как определить индекс и название элемента SubItem в ветке? 3. Как добавить Item в ветку?<br...
Вопрос № 77215: Уважаемые эксперты большое спасибо Вам за помощь если бы не Вы то я бы стоял на месте ещё очень долго у меня проблема я зашел в тупик моя программа на ADO которая запускалась в начале разработки без проблем на другом компьютере теперь при запуске тре...
Вопрос № 77231: Здравствуйте, Уважаемые Эксперты!!! Помогите мне пожалуйста, мне нужно через два дня сдать программу на delphi: тест 30 вопросов, в СЛУЧАЙНОМ порядке выводятся 15 вопросов, 4 варианта ответов, вопросы загружаются из файла txt. Для меня вся сл...
Вопрос № 77303: Помогите с алгоритмом Мне нужно вычертить сетку по которой будет дигаться точка, может кто знает это задача про пьяницу которого колбасит и там идёт гистограмма. Вот мой исходник Проблема в том что клеточки маленькие, и хочется сделать и...
Вопрос № 77311: Здравствуйте!!! Когда запускаешь приложение написанное на дельфи, а затем заходишь в диспетчер задач Windows открываешь вкладку процессы и смотришь приоритет, то он установлен как средний. Как сделать так чтобы программа запускалась с...
Вопрос № 77335: Здравствуйте уважаемые эксперты!!! У меня вопрос следующего характера: Допустим есть родительская форма (Form1) со свойством MDIForm и две дочерние формы (Form2 и Form3) со свойствами MDIChild. Мне нужно, чтобы каждая дочерняя форма открывала...
Вопрос № 77396: Уважаемые эксперты помогите пожалуйста! Подскажите кто нибудь по конкретней как осуществить фильтрацию в ADOTable, код который идет ниже, единственный который не выдаёт ошибок типа "Аргументы имеют неверный тип или вступают в конфликт..." н...

Вопрос № 76.879
Здраствуйте господа эксперты.
Возник вопрос.
Требуется в StringGrid в определённую ячейку
вставить ComboBox после выбора данных из комбобокса соответственно ввести эти данные в эту ячейку.
И второй вопрос как определить координаты выбранной ячейки.
с ув. Костя.
Отправлен: 26.02.2007, 20:19
Вопрос задал: Костя Симанович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Крылов Александр Владимирович
Здравствуйте, Костя Симанович!
Смотрите приложение

Приложение:

Ответ отправил: Крылов Александр Владимирович (статус: 2-ой класс)
Ответ отправлен: 26.02.2007, 23:49
Оценка за ответ: 5
Комментарий оценки:
Здраствуйте Александр Владимирович!
Спасибо за быстрый ответ, то что нужно.
Думал так же, только не знал как определить новые координаты ComboBoxа.

Отвечает: chikanok
Здравствуйте, Костя Симанович!
У меня небольшая дороботка кода Крылов Александр Владимирович.
Недочёт в размерах combobox`a, если у Stringgrid`a не все ячейки будут одинаковых размеров тогда combobox будет рисоваться не там где надо соответственно и данные могут записаться не в ту ячейку.
В приложении поправленый код!
Удачи!

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 3-ий класс)
Ответ отправлен: 28.02.2007, 23:58
Оценка за ответ: 5
Комментарий оценки:
Да действительно, до сих пор у меня все ячейки были одинакового размера и я об этом не подумал.


Вопрос № 76.949
Добрый день! Помогите разобраться с проблемой?Нужно что бы EDITы в определённом диапазоне изменяли цвет(см.приложение). Edit27 цвет изменяет так как надо ,а другие Editы28,29 нехотят.В чем ошибка?

Приложение:

Отправлен: 27.02.2007, 11:12
Вопрос задал: SIR (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Spawn
Здравствуйте, SIR!
Честно, почитайте книжку по Object Pascal. Нечестно почитайте книжку по Object Pascal и разберитесь с условными конструкциями (if then).
Выделите все операторы вот этого типа "if (bX >= X) and (bX <= X) then" и "editX.Color:= clX;" и нажмите F5. Строчка должна стать красной. И запустите программу на выполнение, и увидите что после выполнения одного оператора все дальнейшие действия ПРОПУСКАЮТСЯ!
---------
Знания - сила!
Ответ отправил: Spawn (статус: 1-ый класс)
Ответ отправлен: 27.02.2007, 14:43

Отвечает: Ерёмин Андрей
Здравствуйте, SIR!
Числа с плавающей точкой (Real, Single, Extended, etc.) нельзя просто так сравнивать. В памяти они не конечны. Т.е. даже если число 1.0 занести в переменную, все остальные разряды не всегда будут нулями. Для этого нужно либо окргулять число, либо сравнивать по разрядам. Пример:
if (a = 50.3) then ...
Так делать нельзя. Один из вариантов:
if abs(a - 50.3) < 0.01 then ...
Ну и ещё одно замечание. Если после условия (if) команда выполняется всего одна, то ставить begin и end не нужно.
И напоследок: проверьте все свои условия и их поэтапное выполнение. Там очень премудро написано, а Edit28 и Edit29 потому и не меняют цвет, что там куча условий, а зачем перед каждым else стоит - непонятно.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 27.02.2007, 16:36


Вопрос № 77.039
Здравствуйте уважаемые эксперты! Помогите пожалуйста! как осуществить фильтрацию данных в ADOTable так как это осуществляется в BDE table

Приложение:

Отправлен: 27.02.2007, 21:08
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: din
Здравствуйте, Fireforce!
У BDE свои диалект SQL, в случае с ADO используются другие посредники для работы с БД, в частности ODBC, OLEDB и т.п. Ваш код подправленный чуть (см. приложение) должен работать.
Удачи!

Приложение:

---------
Есть только одно зло - невежество, и только одно благо - знания

Ответ отправил: din (статус: Практикант)
Ответ отправлен: 27.02.2007, 22:07


Вопрос № 77.053
Здравствуйте!
Код в приложении. Код не просто дубовый, а... Гм, ну да ладно...
Так вот: про нажатии на T1, выделенному куску текста присваивается стиль Bold - Жирный(и только жирный, то, что было до него - уходит не попрощавшись), если нажать ещё раз - то стиль этот исчезает... Причём не только этот а вообще все, которые были до этого применены. Та же беда и с остальными обработчиками(курсив, черта...). Как это можно написать по-другому? Чтобы можно было делать и жирный курсив, и курсив с подчёркиванием, а если один стиль нужно отменить - то отменялся б только он один.
Спасибо.

Приложение:

Отправлен: 27.02.2007, 21:53
Вопрос задал: Vic (статус: 10-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Vic!

Смотрите решение в приложении.

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 27.02.2007, 21:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо!
Я и не думал что так просто(наверно я такой... гм)!
И ещё раз спасибо за скорость.

Отвечает: Смолин Николай Васильевич
Здравствуйте, Vic

вся о чем Вы спрашиваете есть в демке к делфям по RichEdit
вот пример....

все работает.

Приложение:

Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 27.02.2007, 22:38
Оценка за ответ: 4


Вопрос № 77.098
Добрый день! Подскажите, пожалуйста, как мне связать компонент OracleDataSet1 с первой формы с компонентом OracleSession1 другой формы. Спасибо за внимание!
Отправлен: 28.02.2007, 07:20
Вопрос задал: Rashit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Смолин Николай Васильевич
Здравствуйте, Rashit!

В модуле первой формы прописать в Unit-ах имя модуля второй формы
Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 28.02.2007, 07:46


Вопрос № 77.175
Уважаемые эксперты, объясните пожалуйста!!!
Никак не могу справиться с TreeView:
1. Как определить индекс и название элемента Item в ветке?
2. Как определить индекс и название элемента SubItem в ветке?
3. Как добавить Item в ветку?
4. Как добавить SubItem в ветку?
5. Точнее как работать с элементами ветки компонента TreeView?
6. И еще, что значит Index и AbsoluteIndex и как с ними работать?
Заранее спасибо!

Приложение:

Отправлен: 28.02.2007, 16:34
Вопрос задал: xXx (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, xXx!

Для большего удобства добавте на форму объект Edit1 в него мы будем выводить промежуточные результаты.

1-2) Как определить индекс и название элемента можно допустим при помощи обработчика TreeView1Click:

procedure TForm1.TreeView1Click(Sender: TObject);
var i:integer;
begin
Edit1.Text:=format('%d %s',[TreeView1.Selected.Index, TreeView1.Selected.Text]);
end;
.
Как видно из кода индекс находим при помощи TreeView1.Selected.Index, а название - TreeView1.Selected.Text.

3) Добавить элемент в ветку можно так:
TreeView1.Items.Add(node0,'ItemName');

4) Соответственно добавить ветку или так называемое "дитя" можно так:
TreeView1.Items.AddChild(node0,'ItemName');
где node0:TTreeNode; - родитель в котором создается ветка (если нужно добавить в корневую ветку то просто nil).

5) Точнее описать весьма сложно все приходит только опытным путем - т.е. как бы Вам не объясняли пока Вы сами до этого не дойдете объяснить тяжело... (на своем собственном опыте убедился). :)

6) Просто напишу что это такое....
Index - содержит индекс узла в списке дочерних узлов его родительского узла.
AbsoluteIndex - возвращает абсолютный индекс узла (с учетом всех дочерних узлов).

В добавок к ответу прилагаю мини-проект в котором продемонстрированы выше указанные действия...

Good Luck!!!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 28.02.2007, 21:23

Отвечает: Смолин Николай Васильевич
Здравствуйте, xXx!
1. все верно абсолютный индекс так и определяется TreeView1.Selected.AbsoluteIndex , но абсолютный индекс может меняться если перед каким любо ноде вставить еще то тот перед которым вставили изменит свой абсолютный индек(увеличится на 1)
вот так определяется название - treeview1.selected.Text
2. treeview1.Selected.getFirstChild.AbsoluteIndex// определяет абс. индекс первой дочерней ветки
3. treeview1.Items.Add(treeview1.Selected,'новый нодэ');
4. treeview1.Items.AddChild(treeview1.Selected,'новый sub нодэ');
5. .... определи свою задачу более конкретно ....разберемся..
6. index это номер нодэ в пределах одной ветви..одного уровня
AbsoluteIndex уникальный порядковый номер
Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 28.02.2007, 21:30


Вопрос № 77.215
Уважаемые эксперты большое спасибо Вам за помощь если бы не Вы то я бы стоял на месте ещё очень долго у меня проблема я зашел в тупик моя программа на ADO которая запускалась в начале разработки без проблем на другом компьютере теперь при запуске требует библиотеку adortl70.bpl
скажите почему? Ведь технология ADO как пишут должна работать без дополнительных драйверов? P.S. Может когда я добовлял в проэкт разные компоненты и эксперементировал с ними забыл удалить ссылки на их библиотеки в разделе Uses? Вот что имеется теперь:

Приложение:

Отправлен: 28.02.2007, 21:05
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Смолин Николай Васильевич
Здравствуйте, Fireforce!

мне непривычно видет модуль Gauges, но похоже дело не в этом...
открой опции проекта вкладка пакеты и посмотри что в этом пакете(adortl70.bpl) находится
Да и BPL это не драйвер а пакет delphi

вот эти добавляются стандартно
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;
остальные можеш пробовать удялять (по одной) и компилить если будет ошибка значит она нужна, возвращай её и пробуй другую убрать..
какие компоненты ты испльзуешь? мне трудно дать полный ответ так как у меня delphi6 а у тебя похоже 7.
Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 28.02.2007, 22:36

Отвечает: din
Здравствуйте, Fireforce!
Откройте Project->Options на вкладке Packages снимите галочку "Build with runtime packages" затем снова скомпилируйте проект. Насчет драйверов, если возникают проблемы, то нужно скачать и установить MDAC.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 28.02.2007, 22:45


Вопрос № 77.231
Здравствуйте, Уважаемые Эксперты!!!
Помогите мне пожалуйста, мне нужно через два дня сдать программу на delphi: тест 30 вопросов, в СЛУЧАЙНОМ порядке выводятся 15 вопросов, 4 варианта ответов, вопросы загружаются из файла txt.
Для меня вся сложность состоит в случайном выводе!!!!
Помогите пожалуйста, если можно с ПРИМЕРОМ КОДА!!
Отправлен: 28.02.2007, 23:11
Вопрос задал: VetiK (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bochvarov NikB
Здравствуйте, VetiK!

Загружаеш все вопросьи (вместе с ответов) из файла.
Каждому вопросу ставиш номер 1..30
I_vopros := 1+random(30); // ето случайной номер вопроса.
Вьибраньх вопросов отмечаеш и если опят поподеш на такой - береш вопрос с меншим номером, которой не отмечен.
Вот реализация примера :), надеюсь, у администратора програмное чувство юмора :)
http://www.purescore.com/pure5.html
Ответ отправил: Bochvarov NikB (статус: 10-ый класс)
Ответ отправлен: 28.02.2007, 23:28
Оценка за ответ: 4

Отвечает: Gh0stik
Здравствуйте, VetiK!

1) Самый простой ответ какой приходит на ум, так это то что если Вы знаете конкретное количество вопросов (и количество вариантов ответов), то входной файл должен иметь как минимум жесткую структуру.
На вопрос выделять ровно 5 строк (1 строка на вопрос и 4 на варианты ответов). То есть входной файл будет выглядеть примерно так:

вопрос1
ответ1
ответ2
ответ3
ответ4
вопрос2
ответ1
ответ2
ответ3
ответ4
....


И далее просто используем генератор случайных чисел плюс заносим в множество уже выбранные вопросы. Пример реализации:

const all=[1..30];
var mn:set of byte;
k:byte;
f:textfile;
.....
begin
mn:=[];
randomize;
while all<>mn do
begin
k:=random(30)+1;
if not(k in mn) then
begin
include(mn,k);
{переходим к k-тому вопросу в файле, и творим с ним чего хотим...}
end;
end;
end.


Данный пример позволяет перебрать все вопросы в произвольном порядке, единственное Вам придеться самостоятельно искать нужный вопрос в файле (но это уже дело техники). В принципе это будет не тяжело если Вы будете придерживаться к предложенной мной структуре...

2) Второй же способ предполагает использования типизированного файла. С точки зрения безопасности это даже лучше. Да и скорость передвижения по вопросам будет намного выше, так как в типизированных файлах можно сразу обратиться к нужной записи.

Вот в принципе и все что хотелось бы сказать.. :) Будут вопросы обращайтесь...

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 28.02.2007, 23:48

Отвечает: Zolton007
Здравствуйте, VetiK!
А че тут сложного? Грузи вопросы в массив, узнай его длину (length) и в цикле от 0 до 14 функцией random() (см. описание) получай индекс очередного вопроса (тобиж индекса элемента массива) и генерируй вопросы =)

Т.е., например типа того
......
for i:=0 to 14 do
edit1.text:=massiv_voprosov[random(0)-15].text;
.....
вымышленный кусок =)

---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 28.02.2007, 23:58

Отвечает: Смолин Николай Васильевич
Здравствуйте, VetiK!

например можно вот так, хотя вариантов много

Приложение:

Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 01.03.2007, 00:18


Вопрос № 77.303
Помогите с алгоритмом
Мне нужно вычертить сетку по которой будет дигаться точка, может кто знает это задача про пьяницу которого колбасит и там идёт гистограмма. Вот мой исходник

Проблема в том что клеточки маленькие, и хочется сделать их побольше но когда я меняю коэффициент с 10 везде на 20 или на 25 получается либо линии уходят либо нАоборот не соединяются. Подскажите в чём проблема в алгоритме

Приложение:

Отправлен: 01.03.2007, 12:54
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Данилевич Игорь Владимирович
Здравствуйте, Александр Михайлович!

Вариант решения в приложении

Приложение:

Ответ отправил: Данилевич Игорь Владимирович (статус: 1-ый класс)
Ответ отправлен: 01.03.2007, 14:14


Вопрос № 77.311
Здравствуйте!!! Когда запускаешь приложение написанное
на дельфи, а затем заходишь в диспетчер задач Windows
открываешь вкладку процессы и смотришь приоритет, то
он установлен как средний. Как сделать так чтобы
программа запускалась с низким приоритетом??
Почему программа которая в приложении очень сильно загружает
систему(загрузка ЦП чуть ли не сто процентов!!!)
см приложение

Приложение:

Отправлен: 01.03.2007, 13:43
Вопрос задал: Rewer8 (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: monah
Здравствуйте, Rewer8!
Снизить приоритет можно из самого приложения. смотрите пример в приложении.
Загрузку же в 100% ваше приложение дает именно потому, что 1 у него нормальный приоритет, 2 Вы использовали бесконечный цикл не озоботившись дать системе отдохнуть. Для избежания таких эффектов можно воспользоваться
1 потоками
2 таймером
3 понизить приоритет приложения
4 использовать sleep(x) где х время неактивности приложения в милисекундах.

Приложение:

---------
festina lente

Ответ отправил: monah (статус: Студент)
Ответ отправлен: 01.03.2007, 14:20

Отвечает: Korolyov Alexandr
Здравствуйте, Rewer8!

Я что-то не понял: цикл Message Pump есть, а регистрации класса окна нет да и функции обработки сообщений тоже.
---------
Читайте help
Ответ отправил: Korolyov Alexandr (статус: 2-ой класс)
Ответ отправлен: 01.03.2007, 18:49


Вопрос № 77.335
Здравствуйте уважаемые эксперты!!!
У меня вопрос следующего характера:
Допустим есть родительская форма (Form1) со свойством MDIForm и две дочерние формы (Form2 и Form3) со свойствами MDIChild. Мне нужно, чтобы каждая дочерняя форма открывалась только в одном экземпляре. Можно было допустим одновременно открыть Form2 и Form3. А вот Form2 и Form2 нельзя было. Т.е. формы, имеющие разный класс окна могли открыться вместе, а вот одна и таже форма открывалась только в одном экземпляре.
Я сделал следующим образом, см. приложение, но у меня получилось, что если открыта Form2, то Form3 уже не откроется и наоборот.

Приложение:

Отправлен: 01.03.2007, 15:46
Вопрос задал: xXx (статус: 6-ой класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Архангельский Андрей Германович
Здравствуйте, xXx!

Нужно использовать переменную MDIChildren, которая хранит список созданных форм
и перебрать весь список типа:

for i:=0 to MDIChildCount - 1 do
if MDIChildren[i] is TForm2 then ....;

если нужной формы нет, то создать

Возможно есть более элегантный способ
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 01.03.2007, 16:08

Отвечает: sir henry
Здравствуйте, xXx!
В этом случае, перед тем как начинать создание формы, нужно проверить, не присвоено ли переменной уже какое-либо значение:
If not Assigned(Form2) Then
Form2:=TForm2.Create(Self);
Только не забывайте сразу же после уничтожения окна, присвоить переменной NIL:
Form2:=NIL;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 01.03.2007, 16:49

Отвечает: din
Здравствуйте, xXx!
1. Кладем на главную форму ActionList
2. Создаем Action например CreateChild
3. Свойство AutoCheck выставляем Enabled
4. На событие OnExecute экшена прописываем:
If CreateChild.Checked then
Form2 := TForm2.Create(Form1)
else
Form2.Free;
Для второй формы делаем поэтому же алгоритму.
Вот и все, код примера в прикрепленном файле.
Удачи!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Есть только одно зло - невежество, и только одно благо - знания

Ответ отправил: din (статус: Практикант)
Ответ отправлен: 01.03.2007, 17:00

Отвечает: Смолин Николай Васильевич
Здравствуйте, xXx!

а мы возьмем и проверим класс каждой дочерней формы и если он совпадает с тем что мы хотим создать то не создаем..т.к форма уже есть..

Приложение:

Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 01.03.2007, 20:55


Вопрос № 77.396
Уважаемые эксперты помогите пожалуйста! Подскажите кто нибудь по конкретней как осуществить фильтрацию в ADOTable, код который идет ниже, единственный который не выдаёт ошибок типа "Аргументы имеют неверный тип или вступают в конфликт..." но он и не фильтрует просто DBGrid отображает одну пустую строку может ещё чтото добавить?

Приложение:

Отправлен: 01.03.2007, 21:43
Вопрос задал: Fireforce (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: din
Здравствуйте, Fireforce!
Если тип Table1.Fields[1] строковый, то надо вот так:
if edit1.Text<>'' then
begin
Table1.Filter :=Table1.Fields[1].FieldName + ' LIKE '+QuotedStr('%'+(edit1.Text) + '%');
Table1.Filtered:=TRUE;
end
else
Table1.Filtered:=false;
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 01.03.2007, 21:55

Отвечает: Смолин Николай Васильевич
Здравствуйте, Fireforce!

Смотрите пример, все работает, проверено...

Приложение:

Ответ отправил: Смолин Николай Васильевич (статус: 1-ый класс)
Ответ отправлен: 01.03.2007, 22:14


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.45 beta от 20.02.2007
Яндекс Rambler's Top100

В избранное