Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: ShIvADeSt
Дата сообщения: 26.01.2005 02:09
Rew

Цитата:
Как мне сделать, когда я нажму на кнопку "Закрыть", то Form1 удаляется (исчезает из памяти) и появляется Form2.

Вот я не понитмаю, почему надо чтобы форма исчезала из памяти? Не проще ли Form1.Hide (или ShowWindow(Form1.Handle,SW_HIDE)
Form2.Show; а при закрытии второй формы наоборот, и гемора меньше, и проще

Цитата:
2. Что вы мне посоветуете? Если у меня есть RadioButton1 и RadioButton2 и при нажатии на кнопку меняется.
Например Если checked RAdioButton1 тогда
Появляется новая форма и на той форме меняется текст в RadioButton1 и в RadioButton2. Потому что мне где-то пять раз надо менять текст.

Делаешь глобальную переменную счетчика MyCount, при нажатии на кнопку в первой форме делаешь Inc(MyCount)
Во второй форме в событии OnShow пишешь нечто подобное
case Form1.MyCount of
1: begin
RadioButton1.Caption:='qqqqqq';
RadioButton2.Caption:='wwwwww';
end;
2: begin
RadioButton1.Caption:='aaaaaaa';
RadioButton2.Caption:='ssssssss';
end;
.....
а вообще вместо радио баттонов по отдельности я юзаю RadiоGroup, если разобраться правильно, то вместо дебильных
if RadiButton1.Checked then... else
if RadioButton2.Checked then...
используется сл
case RadioGroup.ItemIndex of
0:
1:
...
n-1
всего элементов n
насчет ItemIndex не уверен а запускать Дельфи не хотся (ибо утро еще) но что то в этом роде. Итого 10 минут изучения хэлпа по работе с радио группой, и часть проблем исчезает.
Автор: TerraMozg
Дата сообщения: 29.01.2005 11:09
Подскажите, как в TAdvStringGrid обратиться к содержимому ячейки в скрытом столбце? Ведь счетчик столбцов равен счетчику только видимых столбцов? И обращение вида cells[col,row] дает обратиться только к ячейке в видимой части?
Автор: Tropin
Дата сообщения: 29.01.2005 14:14
TerraMozg
А что если обращаться непосредственно к набору данных, а не к гридам, отображающим их?
Автор: EZH
Дата сообщения: 29.01.2005 15:22

Цитата:
А что если обращаться непосредственно к набору данных, а не к гридам, отображающим их?

А разве TAdvStingGrid работает с набором данных типа как БД-гриды? Я думал это просто расширенный TStringGrid, который сам по себе является хранилицем данных.
Автор: TerraMozg
Дата сообщения: 29.01.2005 17:29
Действительно, EZH прав, TAdvStingGrid - это обычный StringGrid. Специально переделываю свою прогу, чтобы не пользовать кривой и глючный БДЕ. И если с хранением и обработкой данных уже все решил, то с отображением набора данных легкий проублем, так как не нашел Грида, могущего заменить Эхлибовский. По совету в этом форуме посмотрел на TAdvStingGrid, и за исключением некоторых вещей, он мне понравился. Но долгое копание в процедурах этого грида не привело к положительному результату, не разобрался как решить поставленную задачу. Поэтому вынужден обратиться к Коллективному Разуму этого форума.
Автор: YurikGL
Дата сообщения: 29.01.2005 19:44
>так как не нашел Грида, могущего заменить Эхлибовский
ИМХО лучше искать готовые гриды под БД чем пытаться TAdvStingGrid пользвать.
Кстати, чем EhLib не угодил?

Добавлено:
Поройся вот здесь http://www.torry.net/
Автор: TerraMozg
Дата сообщения: 30.01.2005 12:02
YurikGL
Я немного не так выразился. Я избавляюсь не только от БДЕ, но и вообще от движка базы данных. Все данные у меня хранятся в текстовом файле и обрабатываются по своим, разработанным мной, правилам. Тем самым достигается полная независимость от сторонних разработчиков и повышается моя крутость Шутка. Соответственно, любые ДБГриды уже неактуальны. Ehlib - замечательная штука, спасибо разработчику. Но в свете вышеописанного использовать его не представляется возможным. В старой версии, с использованием БДЕ, я пользовал только его и был жутко доволен.

Одна из причин, которая послужила основанием для отказа от БДЕ - то, что во всех ДБГридах после выполнения SQL запроса к базе ползунок справа сходил с ума. Крайне некрасиво смотрится. Это вызвано, как я просчитал, тем, что текущее положение ползунка высчитывается по RECNO записи в БД, а максимальное значение ползунка - количество отобранных записей. Вот отсюда косяки и лезут. Как с этим бороться так и не разобрался. А вкупе с остальными недочетами решил сделать свой движок по работе с данными, облегченный. Меньше экзешник, и другие плюсы
Автор: YurikGL
Дата сообщения: 30.01.2005 12:24
>TerraMozg


Кроме BDE есть много других хороших вещей... Например, ADO или IB.
У меня, кстати, никаких проблем с ползунком нет. А свой движок - дело хозяйское, но я бы не советовал изобретать велосипед.
Автор: EZH
Дата сообщения: 30.01.2005 13:54
TerraMozg
Может тебе просто воспользоваться одним из компонентов а ля MemoryTable, т.е. это наследник стандартного TDataSet, и БД-гриды на них также вешаются, и работаешь также, только все данные хранятся им в памяти. А подгружай их из того же текстового файла или бинарного потока.
Автор: TerraMozg
Дата сообщения: 30.01.2005 20:38
YurikGL
ADO вещь хорошая, но ее нет под win9x, т.е. надо доустанавливать. Да и подтормаживает. IB - сколько там инсталяшка Интербейса будет весить? Метров 17? И это для простенькой проги, работающей в однопользовательском режиме?
Свой движок хорош тем, что он заточен под конкретную задачу. Следовательно, оптимизирован и легок. А универсальность (движков) всегда вызывает дополнительные отрицательные эффекты - тормоза, глюки, и т.д. Все ИМХО По ползунку. Простейший пример - у меня в базе около 1500 записей. Сначала (физически в базе)идут записи с одним из полей, равным "1", штук 100, потом штук 600 с полем "2", ну и там остальные. Так вот, когда делаешь select по "2", то курсор по умолчанию в самом конце торчит, хотя указатель находится в начале набора данных. Вот такой вот глюк

EZH
Я уже думал на эту тему. В общем-то по этому принципу новый движок и построил, только без всех промежуточных Датасетов. А так да, данные отображаются в память, и там обрабатываются. В результате уже сейчас, на этапе тестирования движка, все летает, что и требовалось доказать Единственная проблема - с отображением... Может, посоветуешь другой Стринггрид, имеющий возможность скрывать столбцы и выделять прямоугольную область? Эх, если бы BERGовский грид мог мультиселект делать...

Если интересно, то мой проект размещен по адресу:
www.video.elcom.ru/filmoskop.htm
Там BDE-шная версия, и на этой неделе версию обновлю с пофиксенными глюками.
Автор: EZH
Дата сообщения: 30.01.2005 21:51

Цитата:
сколько там инсталяшка Интербейса будет весить? Метров 17?

Инсталляха последнего Firebird-1.5.2.4731-Win32.exe весит 2.6 метра
Сам сейчас на нем один из проектов пишу...

Имхо, такую систему всё-таки на DataSet-движке удобнее писать, а на SQL-сервере так вообще красота, имея SQL-запросы.
Автор: YurikGL
Дата сообщения: 30.01.2005 22:18
>ADO вещь хорошая, но ее нет под win9x, т.е. надо доустанавливать.

Яндекс тебе лучше подскажет, но ADO идет в том числе с оффисом.
Из личного опыта - ни разу не видел машины на которой бы не пошло приложение ADO+MsAccess
Автор: TerraMozg
Дата сообщения: 31.01.2005 21:17
EZH

Цитата:
Инсталляха последнего Firebird-1.5.2.4731-Win32.exe весит 2.6 метра


Спасибо, для будущих проектов поимею ввиду Но опять-таки ЛИШНИЕ 2,6 метра. И это при величине экзешника в 1 Мб. Кстати, в Firebird есть ограничение по максимальной длине полей? В стринггриде оно баснословно велико. По крайней мере, я в ячейку не напрягаясь загоняю код rtf-текста длиной около 20 тыс. символов.


Цитата:
а на SQL-сервере так вообще красота, имея SQL-запросы


SQL - сила! Но нужны ли все возможности SQL в моей задаче?
У себя в движке я уже сэмулировал нужный мне SQL-запрос с выборкой части данных по определенному признаку по нескольким полям. Осталось сделать запрос по комплексу условий ('and', 'or', 'not'), но меня пока держит StringGrid. А больше в моей задаче от SQL ничего и не надо Так что можно смело забивать на любой движок БД.

YurikGL

Цитата:
Из личного опыта - ни разу не видел машины на которой бы не пошло приложение ADO+MsAccess


Понял, спасибо. Просто свои мысли я выразил частично выше. Зачем пользователю ВОЗМОЖНЫЙ геморрой из-за ВОЗМОЖНОГО отсутствия драйверов? Когда система автономна и ни от чего не зависима - это, на мой взгляд, большой плюс.
Автор: akaGM
Дата сообщения: 31.01.2005 21:20
кто-нибудь знает какие надо совершить телодвижения, чтобы убрать (спрятать) child форму из главного MDI-окна при минимизации?




?

заранее...
Автор: ShIvADeSt
Дата сообщения: 01.02.2005 02:17
akaGM
Попробуй ShowWindow(qqqq,SW_HIDE)
где qqq это хэндл формы которую надо спрятать
Автор: YurikGL
Дата сообщения: 01.02.2005 06:55
http://forprogrammers.narod.ru/faqs/faq.html


Q: 19. Как правильно закрыть и удалить форму? Почему моя MDI Child форма
при закрывании просто минимизируется?

A: Обрабатывайте событие OnClose дл формы и выставлйте в нем параметр
Action в caFree. Дело в том, что его значение по умолчанию для MDI Child
форм =caMinimize. Кстати, если сделать Action := caNone, то форму нельзя
будет закрыть.

Автор: akaGM
Дата сообщения: 01.02.2005 13:55
ShIvADeSt
да, спасибо...
я тоже на это на дельфи.about уже набрел...

http://delphi.about.com/cs/adptips2001/a/bltip1101_5.htm

ковыряюсь...

YurikGL
несколько не то... не "закрыть", а "спрятать при минимизации"...

всем спасибо...
Автор: Farkhad
Дата сообщения: 01.02.2005 17:11
Подскажите, есть ли в Дельфе возможность анализировать текст через регулярные выражения?
Пример:

имею
if (x>0) and (x<2) then

мне нужно искать в тексте подобные конструкции, т.е. с рег. выражениями это примерно
if (.*?) then
Автор: akaGM
Дата сообщения: 01.02.2005 17:36
только при использовании доп библиотек...

http://www.jump.to/mkgal
http://anso.da.ru/

еще на Торри посмотри -- их там до фига...
Автор: Farkhad
Дата сообщения: 01.02.2005 18:22
akaGM
спасибо
Автор: agro99
Дата сообщения: 10.02.2005 10:41
Z MeZe
Тоже ищу метод доступа к серийнику CD диска, везде предлагают GetVolumeInfirmation, но это не то
Поделись если нашел какую-нибудь инфу по данной теме - поделись...
Автор: filja
Дата сообщения: 10.02.2005 16:12
Как в DBGridEh создать из ячейки выпадающий список, в к-ром выпадала бы другая таблица этой же БД? (как в 1м примере EhLib).
Автор: MrZeRo
Дата сообщения: 10.02.2005 17:21
Ответ содержится в вопросе :

Цитата:
как в 1м примере EhLib

Так и создавать. Дополнительно можно прочитать EhLib Users Guide (доступен на сайте разработчика)
Автор: filja
Дата сообщения: 10.02.2005 18:06

Цитата:
Так и создавать

Спасибо за такой емкий ответ...

Цитата:
Дополнительно можно прочитать EhLib Users Guide (доступен на сайте разработчика)

Он доступен платно(?)
Автор: EAS
Дата сообщения: 11.02.2005 01:06

Цитата:
Он доступен платно(?)

Почему вдруг? ehLib для xUSSR фриварный, а уж User's Guide и подавно
http://www.ehlib.com

Добавлено:
Сорри, поторопился. За русский User's Guide и впрямь денег хотят. Бесплатно можно английским наслаждаться. Такая вот дискриминация по языковому признаку
Автор: MrZeRo
Дата сообщения: 11.02.2005 11:27
filja
http://www.ehlib.com/EhLibUsersGuide_HTML.exe
Доступен БЕСПЛАТНО. Там приведены основные сведения по работе с этим Grid, полезно ознакомиться, IMHO.

Цитата:
Спасибо за такой емкий ответ...

Немного непонятно, в чем проблема если имеется готовый пример, где это реализовано ...
Автор: Z MeZe
Дата сообщения: 11.02.2005 13:09
agro99

Цитата:
Тоже ищу метод доступа к серийнику CD диска, везде предлагают GetVolumeInfirmation, но это не то
Поделись если нашел какую-нибудь инфу по данной теме - поделись...

На королевстве вот такое ответвление есть:
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=19383
Но там тоже не пришли к конкретному решению.
У меня сейчас времени не было (другой завал), но тема остается актуальной.
Так что если нароешь - отпишись.
Автор: Zhema
Дата сообщения: 11.02.2005 13:51
На компе выполняется команда: net use lpt2: \\computername\printername.

Как программно проверить переназначен таки ли вывод на lpt2 ?
Автор: MrZeRo
Дата сообщения: 11.02.2005 14:12
Zhema
Использовать функции:

WNetOpenEnum
WNetEnumResource
WNetCloseEnum


В MSDN есть пример из использования. Приводить его здесь не вижу смысла.
ms-help://MS.MSDNQTR.2004JAN.1033/wnet/wnet/enumerating_network_resources.htm
Автор: Larry Laffer
Дата сообщения: 11.02.2005 21:18
Подскажите, как обойти блокирование доступа к изменению файла в папке Windows. У меня в ресурснике хранится файлик, которым я хочу заменить оригинальный файл в папке "Windows\system32\drivers\". Я сначала удаляю оригинальный файл (Deletefile, по-другому не дошло до меня), потом использую Res.SaveToFile. ПРи нажатии на кнопку Start в откомпилированной программе появляется ошибка "Отказано в доступе". Как можно программно получить доступ к данной операции?

Заранее благодарен...

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.