Вопрос № 129133: Здравствуйте эксперты! Есть такой вопрос, у мну есть база данных Firebird. приложение в Delphi 7, компоненты таблиц и база данных в приложении Interbase .Когда добавляю данные в таблицы Напрямую связанные через Datasource c DBgrid-ом, они автоматичес...Вопрос № 129156: Здравствуйте, уважаемые эксперты портала. Мой вопрос адресован тем людям, которые работают с программами-инсталляторами. Я использую инсталлятор Inno Setup
Compiler 5.1.4. В общем, написал я программку, теперь хотелось бы создать установочный файл, к...Вопрос № 129202: Здравствуйте, уважаемые эксперты портала.
Вот такой вот у меня есть вопрос по Делфи:
В общем, создал я 2 формы, (2я скрытая) разместил на форме таймер, когда таймер срабатывает, открывается 2я форма. Но когда открыты любые другие окна с прог...Вопрос № 129204: Здравствуйте Уважаемые!Никогда ничего не писал для com-порта,поэтому и спрашиваю у Вас.Задача стоит о передачи изображения через него.Во-первых через какой компонент надо работать,я так думаю надо скачать какой то сторонний(видел в билдере RS-232)есл...
Вопрос № 129.133
Здравствуйте эксперты! Есть такой вопрос, у мну есть база данных Firebird. приложение в Delphi 7, компоненты таблиц и база данных в приложении Interbase .Когда добавляю данные в таблицы Напрямую связанные через Datasource c DBgrid-ом, они автоматически попадают в DBGrid, Но когда идет добавление данных в таблицы, данные из которых выводятся в DBGrid через sql запрос IBQuery, в DBGrid они попадают только после следующего запуска прогрммы, то есть требуется сделать следующее
IbDatabase1.Connected:=False;
IbDatabase1.Connected:=true;
После чего для работы программы необходимо опять установить значение Active = true для всех компонентов базы данных то есть для таблиц и query, так как после отключения базы они автоматически становятся False.
Просто переоткрыть IbQuery1 я пробовал, но это не помогло.
Есть ли какой нибудь метод или способ, при помощи которого можно решить мою проблему, как нибудь безболезненно переподключить базу данных или обновить IBquery, чтобы данные в DBGrid появлялись непосредственно сразу же после добавления их в таблицу.
Помогите пожалуйста, может кто знает как это сделать?
Отвечает: Архангельский Андрей Германович
Здравствуйте, Артур Вильевич!
1) После добавления записи нужно сделать IBQuery.Post; затем IBTransaction.Commit;
2) для IBQuery, который связан с DBGrid нужно сделать IBQuery.Refresh;
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 26.03.2008, 10:56 Оценка за ответ: 5 Комментарий оценки: Спасибо большое, я попробую сделать как вы сказали
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Артур Вильевич!
Мой ответ на практически такой же вопрос №127573
==
После вставки записи Вам необходимо провести закрепление данных - Commit или CommitRetaining. (Разница только в том, что CommitRetaining не закрывает наборы данных, а просто Commit - закрывает).
Есть подозрение, что для каждого из IBQuery Вы используетет отдельный IBTransaction. Если это так, проверьте, чтобы у них были установлены параметры read_commited (читать данные подтвержденных транзакций. В противном случае установлен режим Snapshot_isolation - читаются данные, существовавшие на момент старта транзакции).
==
И не забудьте, что запрос, отображающий данные в гриде, после вставки данных надо обновить (переоткрыть)
Ответ отправил: Лукьяненко Алексей Валериевич (статус: Студент)
Ответ отправлен: 26.03.2008, 10:58 Оценка за ответ: 5 Комментарий оценки: Спасибо большое, я попробую, в тот раз я не совсем понял, что Commit нужно сделать для IBTransaction, Смысле не только установить CommitRetaining, но и подтвердить вручную.
Вопрос № 129.156
Здравствуйте, уважаемые эксперты портала. Мой вопрос адресован тем людям, которые работают с программами-инсталляторами. Я использую инсталлятор Inno Setup Compiler 5.1.4. В общем, написал я программку, теперь хотелось бы создать установочный файл, который распаковывает основной файл моей программки в автозапуск. Подскажите, как это устроить. Может, посоветуете мне какую-нибудь другую программу-инсталлятор, кроме Inno Setup (только желательно, чтобы она была бесплатная, и подскажите ссылочки, откуда ее можно
скачать).
Заранее спасибо. Георгий.
Отвечает: AndreyZotov
Здравствуйте, Чечин Георгий Александрович!
Ответ на второй вопрос
http://www.istool.org/ - Этот инструмент работает в паре с Inno Setup и служит прекрасной визуальной оболочкой для него. Использую эту пару года 3 и доволен.
На первый... Вот нашел кусок из инета (сам не пробовал):
[Icons]
Name: "{commonprograms}Автозагрузка"; Filename: "{app}miranda32.exe"
Говорят, надо почитать в хелпе раздел "Переменные".
PS По ходу узнал что Inno Setup в последних версиях стал более русским (???)
Надо бы обновить эту парочку...
Ответ отправил: AndreyZotov (статус: 1-ый класс)
Ответ отправлен: 26.03.2008, 14:10 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ. Но такой Вам встречный вопрос: Вы то хоть сами поняли, что написали? Я пока читал Ваш ответ бодро посмеялся. С уважением, Георгий. P.S. Не обижайтесь.
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Чечин Георгий Александрович!
Сделал, как Вы хотите: файл сохраняется в папке Автозагрузка, также отключено создание uninstaller-а (чтобы файлы в этой папке не размножать) и сообщение о том, что указанная папка уже существует.
Вот сам скрипт:
_________________________
; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
[Setup] AppName=Program AppVerName=My Program 1.5 AppPublisher=My Company, Inc. AppPublisherURL=http://www.example.com/ AppSupportURL=http://www.example.com/ AppUpdatesURL=http://www.example.com/ DefaultDirName={commonprograms}\Автозагрузка DefaultGroupName=My Program OutputBaseFilename=setup Compression=lzma SolidCompression=yes
; чтобы файл unis000.exe не создавался Uninstallable=no ; разрешаем не создавать никакие иконки AllowNoIcons=yes ; отключаем сообщение о том что папка уже существует DirExistsWarning=no
Если что не так, пишите в мини-форум - постараюсь помочь!:)
Удачи!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
Ответ отправил: Николай Владимирович / Н.В. (статус: Профессор) Россия, Москва WWW:nvsoft.org ICQ: 420720 ---- Ответ отправлен: 26.03.2008, 22:50 Оценка за ответ: 5 Комментарий оценки: Спасибо большое. Попробую сделать все, как Вы сказали. Спасибо еще раз.
Вопрос № 129.202
Здравствуйте, уважаемые эксперты портала.
Вот такой вот у меня есть вопрос по Делфи:
В общем, создал я 2 формы, (2я скрытая) разместил на форме таймер, когда таймер срабатывает, открывается 2я форма. Но когда открыты любые другие окна с программами, а моя программка свернута, - по таймеру открывается 2я форма, но открывается она на «заднем плане». Как сделать так, чтобы она открывалась поверх всех окон, независимо от того, какие это программы.
Отвечает: Drbear !!! Здравствуйте, Чечин Георгий Александрович!
Попробуйте установить FormStyle в fsStayOnTop
Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 26.03.2008, 18:55 Оценка за ответ: 4 Комментарий оценки: Спасибо. Но это почему-то не сработало.
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Чечин Георгий Александрович! В событии OnPaint для второй формы напишите FormStyle := fsStayOnTop; Обратите внимание: изначально данное свойство должно быть fsNormal иначе форма останется на заднем плане.
А простая установка свойства FormStyle, как посоветовал предыдущий эксперт, здесь не поможет.
Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Профессор) Россия, Москва WWW:nvsoft.org ICQ: 420720 ---- Ответ отправлен: 26.03.2008, 19:06 Оценка за ответ: 5 Комментарий оценки: Николай Владимирович, Вам отдельное спасибо. Ваши ответы мне очень хорошо помогают.
Отвечает: Mishell
Здравствуйте, Чечин Георгий Александрович!
как вариант при показе второй формы можно сделать так:
SetForegroundWindow(Application.Handle);
Ответ отправил: Mishell (статус: 9-ый класс)
Ответ отправлен: 26.03.2008, 19:54 Оценка за ответ: 5 Комментарий оценки: Спасибо. Попробую и так.
Отвечает: PavelGM
Здравствуйте, Чечин Георгий Александрович!
Ну и до кучи можно еще добавить к предыдущим такой способ
SetWindowPos(Form2.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
А можно использовать все сразу, или два из трех - иногда по задаче нежелательно иметь стиль fsStayOnTop.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 26.03.2008, 21:54 Оценка за ответ: 5 Комментарий оценки: Спасибо. Интересный ответ.
Отвечает: Genia007
Здравствуйте, Чечин Георгий Александрович!
Можно сделать так, у меня нормально работает:
procedure TForm3.Timer1Timer(Sender: TObject);
begin
Form3.Show;
Form3.FormStyle:= fsStayOnTop;{Форма поверх остальных}
Form3.SetFocus;
end;
Ответ отправил: Genia007 (статус: 9-ый класс)
Ответ отправлен: 27.03.2008, 09:17 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: AndreyZotov
Здравствуйте, Чечин Георгий Александрович!
Ответ отправил: AndreyZotov (статус: 1-ый класс)
Ответ отправлен: 28.03.2008, 13:53 Оценка за ответ: 4 Комментарий оценки: Спасибо.
Вопрос № 129.204
Здравствуйте Уважаемые!Никогда ничего не писал для com-порта,поэтому и спрашиваю у Вас.Задача стоит о передачи изображения через него.Во-первых через какой компонент надо работать,я так думаю надо скачать какой то сторонний(видел в билдере RS-232)если есть ссылка дайте пожалуйста у меня D7.Во-вторых может поможете с сылками на литературу которую нужно почитать,ну и было бы замечательно если у кого есть готовый код.
Отправлен: 26.03.2008, 19:00
Вопрос задал: Зотов.Г.А (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Igor_
Здравствуйте, Зотов.Г.А!
Использую CPort он работает как для Delphi так и для BCB. Очень удобная штука.
Я ни чего не зная о работе с COM-портом с этим компонентом уже реально работал через пару часов с устройством (кассовый аппарат).
Ответ отправил: Igor_ (статус: 4-ый класс)
Ответ отправлен: 26.03.2008, 19:08 Оценка за ответ: 5 Комментарий оценки: Спасибо и за это,есть хоть с чего начать