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

» Вопросы по Delphi (все версии) - часть 4

Автор: DmitryKz
Дата сообщения: 12.09.2008 00:06
Ребята, помогите по нескольким вопросам:
1. Есть 5 таблиц БД. Используются компоненты FIBPlus. В режиме проектирования настроил Датасеты для каждой таблицы, заполнил поля в датасетах, связал соответствующие датасорсы и к ним подключил кантролы DBComboBox.
При попытке сделать активными датасеты одно подключение вываливается с ошибкой поле FIRSTNAMEKEY не найдено (это так ключевое поле у меня в таблице названо). Все остальные 4 датасета активируются успешно (проверено путем закомментирования строчки с проблемным датасетом). Я все перепровил, код, свойства кантролов, поле FIRSTNAMEKEY в нужном датасете присутствует. Ничего не могу понять, где проблема
2. И еще вопрос: как в рантайме заполнить поля так, как это делается в режиме проектирования двойным кликом на датасете и выбором Add all fields...?
3. Какой код использовать, чтобы программа могла получить полный путь к каталогу, в котором она запущена и название исполняемого файла ее самой?
4. Может ли кто-нибудь подсказать код или компонент для отображения анимации процесса думания программы? Ну там бегущая строка или движущаяся по кругу лупа, что-то вроде того.
Спасибо.

Добавлено:
Так, по 4-му вопросу - компонент в среде уже есть. А готовые анимашки где можно взять?
Автор: ShIvADeSt
Дата сообщения: 12.09.2008 01:31
DmitryKz
3 пункт - Application.ExeName - возвращает полный путь и имя исполняемого файла либо

ParamStr(0) - returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE).
2 пункт. Смотри в сторону FieldCount и обращение по индексу к полю например qrUser.Fields[1].DisplayName. В итоге получаешь количество полей, пробегаешь все поля, получаешь их имена, а далее заполняешь какой нить ListBox ими, предлашаешь пользователю выбрать нужные. Далее добавлешь Column к гриду, короче простор полный )
Автор: shulum
Дата сообщения: 12.09.2008 09:38
DmitryKz
3 пункт

Цитата:
Какой код использовать, чтобы программа могла получить полный путь к каталогу

ExtractFilePath(application.exename)

Цитата:
и название исполняемого файла ее самой

ShIvADeSt ответил
4 пункт - AdvCircularProgress из пакета TMS (круговая) или cxProgressBar из пакета DevExpress - все это присутствует в "Коммерческие компоненты и утилиты для Delphi/BCB", если надо что бы программа не "подвешивалась" и эти анимации работали, то все манипуляции приложения надо запихивать в отдельный поток ... для этого можно воспользоваться JvThread из пакета JVCL (он бесплатный), можно и самому потоки наваять, но с JVCL как-то проще что ли.

Автор: DmitryKz
Дата сообщения: 12.09.2008 10:22
shulum
Спасибо, а из бесплатных есть какие-нибудь аналоги? Или какая-нибудь симпатичная авишка, например.
Автор: sergiuz1303
Дата сообщения: 12.09.2008 11:40
Уважаемые форумцы.
Помогите, хочу формы заганять в длл вместе с процедурами такое возможно, и если есть какие то примеры скиньте плз.
Заранее благодарен
Автор: shulum
Дата сообщения: 12.09.2008 11:54
DmitryKz
в JVCL есть компонент JvWaitingGradient - вроде не плохой, но по сравнению с указанными выше образцами немного "сдает", но использовать можно (сам пользовал)
можно поискать на torry.net

Добавлено:
sergiuz1303
можно - www.delphikingdom.com
Автор: Coltrain
Дата сообщения: 12.09.2008 12:32
2 DmitryKz
По второму вопросу. Если в дизайн-тайме поля не были созданы, то в ран-тайме при открытии датасета они создаются автоматически. Или досоздаются автоматически те поля, которые не были созданны в дизайн-тайме, а в запросе они присутствуют. Т.е. все равно все необходимые TFields после открытия датасета будут доступны. Для чего необходимо "вручную" создавать поля? Уточните вопрос.

По первому вопросу. Посмотрите SQLMonitor на открытие проблемного датасета. Станет яснее - проблема в самом запросе или в настройке датасета
Автор: sergiuz1303
Дата сообщения: 12.09.2008 13:05
shulum

Цитата:

можно - www.delphikingdom.com

это я читал но то ли там старые статьи но не один пример у меня Д2006 не работает.
Хотелось бы что нить рабочее.
Автор: DmitryKz
Дата сообщения: 12.09.2008 13:26
Coltrain

Цитата:
Для чего необходимо "вручную" создавать поля?


Цитата:
они создаются автоматически

Не знал этого момента, спасибо за подсказку
Автор: shulum
Дата сообщения: 12.09.2008 16:20
sergiuz1303

Цитата:
это я читал но то ли там старые статьи но не один пример у меня Д2006 не работает.
Хотелось бы что нить рабочее.


D7 рулит - примеры оттуда на D7 работают. К сожалению, больше ничем я лично помочь не смогу - ибо сам на D7 сижу
Автор: Frodo_Torbins
Дата сообщения: 12.09.2008 16:31
sergiuz1303
Там все примеры по плагинам состоят из нескольких проектов. Все их надо открыть и перекомпилировать, тогда заработают. Сам на D2007 проверял некоторые.
Автор: DmitryKz
Дата сообщения: 12.09.2008 17:47
Спасибо всем за помощь. По 1-му вопросу разобрался - там в одном месте код был некорректный.
Автор: sergiuz1303
Дата сообщения: 12.09.2008 19:51
Frodo_Torbins
в том то и дело что все время ошибку выдает когда даже перекомпилировал
Автор: Frodo_Torbins
Дата сообщения: 12.09.2008 21:33
sergiuz1303
Дайте что ли ссылку на статью. Некоторые из тамошних примеров я смотрел, но не все. И последовательность ваших действий не помешает.
Автор: hackman
Дата сообщения: 13.09.2008 16:20
1
Автор: Maks150988
Дата сообщения: 14.09.2008 13:49
Ребята, вобщем ситуация такая. Необходимо чтобы всякие константы/переменные в проекте и функции для обработки сообщений диалогов были в модулях отдельно. вот с типами/константами\переменными у меня получилось все вынести в отдельные для них модули в раздел interface. А вот например например с функцией для диалога не получается сделать. Пробовал в раздел implementation выносить, компилятор ругается что не находит такую функцию, хотя модуль с этой функцией везде указан в проекте. Может нужно директивы указать специальные для компилятора какие-то?
Автор: lavren
Дата сообщения: 14.09.2008 14:58
Maks150988
В interface объяви функцию или процедуру.

Код: unit MyCode;

interface

function MyFunc( MyParam: string ): string;

implementation

function MyFunc( MyParam: string ): string;
begin
Result := 'Это просто пример!';
end;

end.
Автор: Maks150988
Дата сообщения: 14.09.2008 15:17
lavren
А,блин, спасибо! Вот я недодумался то с этой функцией, хоть и модули подобные делаю. =) Как-то на ум сразу не пришло. =)
Автор: delover
Дата сообщения: 15.09.2008 10:29
shulum
Жаль что в JEDI inc так и не появилась SUPPORT_REINTRODUCE. (
Всё ж интересно d4 или d5.

Добавлено:
Да и хистори в конце файлов прикрыли.
Автор: DmitryKz
Дата сообщения: 15.09.2008 20:51
Ребята, есть ли у кого-нибудь пример кода для заполнения TTreeView? У меня задача построить оглавление Вордовского документа. В самом документе есть работы, их части, главы, подглавы, при чем все это вне всякой закономерности. Этим частям назначены соответствующие стили заголовков, которые собсно, и определяют местоположение узла. Могут быть подглавы или главы в работе, но могут и не быть. Надо построить дерево оглавления, со всеми этими родительскими и дочерними узлами. Может у кого есть на примере такой код для заполнения компонента с незакономерной структурой? Если нет, то, конечно, придется подумать самому
Автор: delover
Дата сообщения: 16.09.2008 08:18
А узлы что, идут не по порядку? В том смысле, что дочерние элементы могут идти раньше чем родительские... Какой алгоритм нужен? По визуал бэйсику лучше наверное в другой ветке.

Добавлено:
А в общем docx он же архив с xml.
Автор: ShIvADeSt
Дата сообщения: 16.09.2008 12:30
DmitryKz
Обычного дельфийского TTreeView или на API, если первое то вот примерный код

Код:
procedure TfrmTasks.FormCreate(Sender: TObject);
procedure AddChapters(Title:string;Itms:integer);
var
Node,SubNode:TTreeNode;
i :integer;
begin
with Chapters.Items do begin
Node:=Add(nil,Title);
Node.ImageIndex:=0;
Node.SelectedIndex:=1;
for i:=1 to Itms do begin
SubNode:=AddChild(Node,'Задача '+IntToStr(i));
SubNode.ImageIndex:=2;
SubNode.SelectedIndex:=2;
end;
end;
end;
begin
Chapters.Items.Clear;
AddChapters('Задачи',25);
Chapters.FullExpand;
Chapters.Items[1].Selected:=True;
ADOTask.Open;
end;
Автор: DmitryKz
Дата сообщения: 16.09.2008 12:45
delover
Узлы в этом смысле идут по-порядку. Просто состав дочерних веток и их узлов всегда разный.

Цитата:
По визуал бэйсику лучше наверное в другой ветке

Я бы и пошел в ветку по Бэйсику, если бы вопрос был задан по Ворду, а не по TTreeView. Как заголовки с разными стилями прочесть я знаю.
ShIvADeSt
Спасибо, попытаю.
Автор: hixxas
Дата сообщения: 16.09.2008 16:49
Delphi 2009 12.0.3170.16989
Обнаружил баг, не меняется цвет Caption любой кнопки (Button, BitBtn, Speedbutton), в 2007 все отлично работало.
Может появились какие-то особенности?
Автор: delover
Дата сообщения: 17.09.2008 06:47
DmitryKz

Цитата:
если бы вопрос был задан по Ворду,

Я к тому, что вопросы по Ворду мне не решить. К примеру могу добавить, что Chapters.FullExpand может иметь параметр (вопрос вкуса):


Код:
procedure FullExpand(tv: TTreeView; Recurse: Boolean);
var
Node: TTreeNode;
begin
tv.Items.BeginUpdate;
try
if not Recurse then
begin
Node := tv.Items.GetFirstNode;
while Node <> nil do
begin
Node.Collapse(True);
Node.Expand(False);
Node := Node.GetNextSibling;
end;
end else
tv.FullExpand;
finally
tv.Items.EndUpdate;
end;
end;
Автор: DmitryKz
Дата сообщения: 17.09.2008 22:00
Ребята, такой вопрос: можно ли как-то произвести даунгрэйд существующего проекта с Дельфи 2007 на 7? А то я решил попробовать писать проект на 2007, да че-то как-то не могу привыкнуть к его глюкам, хотя, конечно, удобней иногда, зараза. Сам проект в 7-ке открыл, кое-какие исправления внес, чтобы не мешали компиляции, да видно, что что-то где когда-то подглючивает. Может, есть какие-то рекомендации по такому случаю?
Автор: Frodo_Torbins
Дата сообщения: 17.09.2008 22:32
DmitryKz
Восстановить из бекапа. Если бекапа вы не делали, то могла сделать сама среда в папке с проектом.
Автор: DmitryKz
Дата сообщения: 17.09.2008 22:38
Frodo_Torbins
В смысле из бэкапа? Если проект с самого начала писался на 2007?
Автор: Frodo_Torbins
Дата сообщения: 17.09.2008 23:23
DmitryKz
Тогда только общие рекомендации для случаев
Цитата:
что что-то где когда-то подглючивает
: поставить логер типа EurekaLog или MadExcept.
Автор: DmitryKz
Дата сообщения: 17.09.2008 23:27
Frodo_Torbins
Ясно Я не думал, что задача настолько нетривиальна. Спасибо, буду думать, стоит ли овчинка выделки

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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