Вопрос № 60534: Здравстуйте Уважаемые експерты! У меня необычный вопрос: Как в программе создать среду разработки, наподобие конфигуратора 1С или что-то подобное. Подскажите в каком направлении двигаться, что почитать или посмотреть. Спасибо!...Вопрос № 60607: Уважаемые эксперты. Как передать параметр функции, вызываемой процедурой win-api SetTimer? Или как можно динамически создать таймер-поле класса, вызывающий в событии OnTimer другой
метод того же класса? Если можно, наглядным примером.
Заранее спа...Вопрос № 60617: Здраствуйте!
Есть база данных sql, подскажите новичку...как вывести данные на экран (т.е. с помощью какого компонента лучше вывести). Чтобы выглядело все как таблица...причем она длинная и на экран вся не поместится - должна быть прокрутка. Под т...Вопрос № 60618: здравствуйте, уважаемые эксперты.
вот есть простая процедура-обработчик нажатия кнопочки:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
xx:real;
begin
xx:=49.001;
if xx =49.001 then
showmessage ('AA...Вопрос № 60633: Здравствуйте!
В SocetConnection есть свойство порт, а в DCOMConnection нет такого свойства. Как работать с портами в DCOMConnection?
И ещё один вопрос который почемуто не попал к экспертам.
Что Вы скажите уважаемые эксперты по поводу...Вопрос № 60642: Здравствуйте, ув. эксперты. Скажите, как работать с компонентом TTabControl. Как располагать компоненты на разных вкладках, где об этом можно почитать? Подскажите, где вообще можно найти описание компонентов?...
Вопрос № 60.534
Здравстуйте Уважаемые експерты! У меня необычный вопрос: Как в программе создать среду разработки, наподобие конфигуратора 1С или что-то подобное. Подскажите в каком направлении двигаться, что почитать или посмотреть. Спасибо!
Отправлен: 29.10.2006, 09:57
Вопрос задал: Viktor_sh (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: PaVeL_Ekt
Здравствуйте, Viktor_sh!
Вам придется динамически создавать форму, и все компоненты, описание которых будут храниться в каком-нибудь файле или базе данных.
динамически можно создавать через WinAPI,
Можно самому попотеть, и сделать прорисовку форм, и обработку событий
(долго и муторно но можно) но файл описаний в любом случае будет !!!
также могу посоветовать все элементы формы при загрузке программы загружать в динамический массив (например:
VAR BTNDINAMICAL: array of TButton;)
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 09:13
Вопрос № 60.607
Уважаемые эксперты. Как передать параметр функции, вызываемой процедурой win-api SetTimer? Или как можно динамически создать таймер-поле класса, вызывающий в событии OnTimer другой метод того же класса? Если можно, наглядным примером.
Заранее спасибо!
Отправлен: 29.10.2006, 22:21
Вопрос задал: =FeanaR= (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Melamed
Здравствуйте, =FeanaR=!
Лучше создавай динамический таймер, а еще лучше используй комонент Timer, предварительно
выставив его свойство Enable в значение False. Этим ты отключишь таймер. А когда тебе надо б
;удет запустиь таймер, ты только установишь это своство в значение True и все
Ответ отправил: Melamed (статус: 7-ой класс)
Ответ отправлен: 30.10.2006, 00:30
Вопрос № 60.617
Здраствуйте!
Есть база данных sql, подскажите новичку...как вывести данные на экран (т.е. с помощью какого компонента лучше вывести). Чтобы выглядело все как таблица...причем она длинная и на экран вся не поместится - должна быть прокрутка. Под таблицей я понимаю расчерченную область - ячейки. Далее еще предполагается использовать выбирать необходимые данные из этой таблица нажатием мыши. Кто что может подсказать по этому поводу.
Отвечает: sir henry
Здравствуйте, Артемова Марина!
В Дельфи для этого есть специальный компонент - DBGrid. Это именно расчерченая область - ячейки, заголовки...
Только есть одна неувязочка. База данных - это не таблица, а набор таблиц. Поэтому к базе данных необходимо составить запрос в котором указать - какие поля и из каких таблиц Вы хотите видеть в своей сетке. Кроме того может так случится, что в таблицы базы данных будут накидано столько всевозможных данных, что пользователь будет с утра до вечера крутить прокрутку, но то, что ему нужно не найдет. Или уснет в процессе поиска. Поэтому в запрос необходимо будет добавить условия отбора данных, чтобы туда попали именно
те данные, которые нужны пользователю.
Потом тоже неувязочка начнет просматриваться - а куда же этот самый запрос запихать, как его оформить? Не знаю. Компонентов для доступа к базам данных куча и какой выбрать - зависит от того, какой тип сервера баз данных у Вас установлен.
Вам срочно необходимо, не медля ни секунды, купить какую-нибудь книгу по работе с базами данных в Дельфи.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 30.10.2006, 04:49
возмите компонент Query с панели BDE проришите запрос к БД!
настройте Databasename
приткните на форму DATASource с панели Data Access
в свойстве dataset выберите query1
вставьте на форму dbGrid панель Data Control
в свойстве DataSource выберите DataSource1
в кнопку вставьте такой код:
query1.ExecSQL;
компилируйте и жмите на кнопку, все появиться
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 08:54
Отвечает: Jadd
Здравствуйте, Артемова Марина!
К вышесказанному попробую добавить пару вариантов.
Из компонентов для управления данными из таблиц проще всего использовать BDE и компонент TTable и TDataSource. В БДЕ надо создать псевдоним (alias), который бы ссылался на Вашу БАЗУ. Далее. На форму кидаем TTable и в поле DatabaseName выбираем Ваш псевдоним. TableName - выбираем имя Вашей таблицы. Active устанавливаем в true. Дальше. На форму кидаем TDataSource. Свойство DataSet - выбираем TTable, который только что настроили. Затем соединяем DBGrid с DataSource и получаем данные из таблицы на экране :)
Другой способ - использовать ADO. Настройки примерно те же, но там еще компонент добавится TADOConnection.
Какой из этих способов выбирать зависит даже не от сервера баз данных, а от того, какие задачи Вы ставите. Например, будет ли программа переноситься с компьютера на компьютер(тогда лючше ADO, чтобы не таскать весь BDE)? Ну и тп.
Успехов, пишите, если возникнут трудности или вопросы.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 30.10.2006, 08:56
Вопрос № 60.618
здравствуйте, уважаемые эксперты.
вот есть простая процедура-обработчик нажатия кнопочки:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
xx:real;
begin
xx:=49.001;
if xx =49.001 then
showmessage ('AAAAAAAAAA' );
end;
так вот вопрос в том, что я не пойму, ПОЧЕМУ программа при прохождении этой процедуры не выдает сообщения? я прохожу ее троссировкой, вижу, что xx имеет значение 49.001, но при этом не выполняется if !!!!! я не могу уже. нервы уже не выдерживают. вообще-то конечно проблема заключается не конкретно в этом коде. просто путем долгого поиска я вышел на подобную проблему в сложной программе.
чем можете помочь?
Спасибо.
Отправлен: 30.10.2006, 00:25
Вопрос задал: Lichkaty (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: DeVampir
Здравствуйте, Lichkaty!
Думаю, дело в том, что просто так нельзя сравнивать между собой вещественные числа. Попробуйте в if вместо равенства писать так abs(xx - 49.001) <= 0.0001. Здесь 0.0001 - требуемая точность.
Удачи!!!
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 30.10.2006, 03:04
Отвечает: sir henry
Здравствуйте, Lichkaty!
Проблема в системе хранения чисел с плавающей запятой. У них всегда есть погрешности, которые не позволяют проводить точное сравнение.
Возможные решения:
1. Если у Вас количество знаков после запятой не превышает четырех, то пользуйтесь типом Cardinal. Несмотря на то, что там есть запятая - это целочисленный тип, позволяющий проводить точное сравнение. Этот тип добавили специально по просьбе бухгалтеров, у которых с вещественными типа беспрерывно терялись копейки (центы, пенсы и т.п.), за что им постоянно мылили шею. :)
2. Переводите перед сравнением вещественный тип в форматированную строку, где будут указаны точное кол-во знаков после запятой, например с помощью Format(). Тогда по = будут сравниваться две строки на эквивалентность, а здесь уже можно провести точное сравнение, т.к. код каждого символа - целочисленный тип.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 30.10.2006, 05:07
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Lichkaty!
Попробуйте вместо типа real использовать extended
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
var xx:real;
Begin
xx:=49.002;
if CompareValue(xx,49.001)=0 then
showmessage ('AAAAAAAAAA' );
end;
Только в USES обязательно припиши MATH, и все в ажуре будет,
но если это не подходит, есть функция (не помню как называется) которая извлекает из дробного числа все, что правее запятой
о вспомнил, Frac тогда можно проверять целое число и проверять дробную часть, но только она возвращает тоже реал (frac(49,005) вернет 0,005), так-что лучше через компаре
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 08:41
Вопрос № 60.633
Здравствуйте!
В SocetConnection есть свойство порт, а в DCOMConnection нет такого свойства. Как работать с портами в DCOMConnection?
И ещё один вопрос который почемуто не попал к экспертам.
Что Вы скажите уважаемые эксперты по поводу вот этой статьи:
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=773 ?
Т.е. какие ошибки в этой статье, как можно улучшить проект представленный в данной статье?
Отправлен: 30.10.2006, 06:58
Вопрос задал: KuchumHan (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: PaVeL_Ekt
Здравствуйте, KuchumHan!
DComConnection, насколько я понял, полистав хелп делфы, работает через COM + или MTS у которых впринципе являеться частью финды, а по сему я предпологаю, что порт для этих соединений забиндин самой системой !!!
ClientConnection идентифицирует машину по IP, а значит и порт приложения необходим !!! это сделано насколько я понял для поддержи множественных серверов, чтобы менять сервер во время работы.
Пример впринципе простой, и не сложный, и ошибок как бы я не заметил, но для каких-либо крупных задачь может задуматься об использовании SQL (Oracle), тем более, что компанентов для этих целей предостаточно !!!
Приложение:
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 08:15
Вопрос № 60.642
Здравствуйте, ув. эксперты. Скажите, как работать с компонентом TTabControl. Как располагать компоненты на разных вкладках, где об этом можно почитать? Подскажите, где вообще можно найти описание компонентов?
Отправлен: 30.10.2006, 09:00
Вопрос задал: dobroman (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Monah
Здравствуйте, dobroman!
О данном компоненте неплохо написано в книге Бобровского "DElphi 7". Основная работа происходит через его свойство Tabs - которое хранит колекцию вкладок. При разработке можно заполнить дочерними компонентами только Tabs[0], в runtime возможно полное управление вкладками, (создание, удаление) перерисовка. При этом учтте, что при переключении вкладок их содержимое само не меняется и соответствеут содержимому первой вкладки tabs[0]. Если же вам надо чтобы содержимое менялось динамически, используйте
компонент PageControl.
Ответ отправил: Monah (статус: 6-ой класс)
Ответ отправлен: 30.10.2006, 09:12
Отвечает: PaVeL_Ekt
Здравствуйте, dobroman!
Через поисковики инета !!!
Делфиворлд (DelphiWorld)
Королевство делфи и т.д.
а по таб контролу могу сказать следующее,
если на разных вкладках будут разные компоненты, то может имеет смысл поставить PageControl т.к. там можно создавать страницы, а TabControl создает только закладки, а потому в табконтроле компоненты будут одни и теже на всех закладках, а пайдж контрол он для каждой закладки использует панель, потому на каждой странице пейджа будет свой набор компонент !!! Выбирай, что нравится.
УДАЧИ
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 10:14