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

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

Автор: RedPromo
Дата сообщения: 14.10.2007 19:12
dmit000
А тебе готовые "компанент"ы что не нравятся, если нет тогда вперед че там помогать создай свой компонет с предком TCustomEdit переопредели метод DoKeyPress, помойму так можно, точно не помню.
Автор: DmitryKz
Дата сообщения: 14.10.2007 19:26
Скажите, существует ли в Дельфи функция - узнать по пути имя папки: т.е., например, на входе - "C:\Documents and Settings\All Users" - на выходе "All Users"?
Автор: RomanTim
Дата сообщения: 14.10.2007 21:04
DmitryKz
ExtractFileName
Автор: DmitryKz
Дата сообщения: 14.10.2007 23:16
Помогите советом по способу реализации задачи:
Есть список неких элементов, пока я придумал организовать его как строковый двумерный массив: 1-й столбец - имя объекта, 2-й - полный путь к нему. Имя объкта (1-й столбец) по умолчанию совпадает с именем папки, указанной в пути (2-й столбец), но пользователь может изменять это имя. Как я уже сказал, эта инфа организовывается в виде двумерного массива. В визуальном интерфейсе пользователя она отображается в виде ListView со свойством ViewStyle установленным в vsReport (таблица), который и отображает всю инфу, хранящуюся в массиве. Пользователь может добавлять элементы, перемещать в ListView отдельный элемент или группу, сортировать, редактировать (1-й столбец) имя элемента. Проблема в том, что у меня не хватает фантазии, как организвать связь между массивом данных и визуальным компонентом ListView. Если бы речь шла об одномерном массиве, сложностей вроде не вижу - организовал бы в TStrings, или TStringList. Но вот как быть, если массив двумерный? Я пришел к выводу, что надо будет добавлять процедуры управления массивом - добавлене, сортировка, редактирование 1-го столбца и проч., а затем обновлять содержимое ListView. Но может есть обратный путь: сортировка и изменения в визуальном компоненте автоматически (т.е. внутренними методами) изменяют содержимое массива? Буду благодарен за любые советы.
Автор: RomanTim
Дата сообщения: 15.10.2007 06:50
DmitryKz
Как вариант - какой-нибудь датасет располагающийся в памяти (стандартный - TClientDataSet) и DBGrid. Правда при таком варианте придется заводить еще поле Order, чтобы организовать нужный тебе порядок следования записей и при вставке новой записи в середину менять это поле у группы других записей.

А еще можно не заморачиваться с невизуальной второй копией данных, а работать напрямую с ListView.
Автор: DmitryKz
Дата сообщения: 15.10.2007 07:40
А если эти данные нужны мне для последущей работы? Для поиска файлов в этих объектах - папках, для последующих запусках приложения, в том числе.
Автор: SergeBS
Дата сообщения: 15.10.2007 08:36
dmit000
procedure TMyForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (ActiveControl is TEdit) then
with (ActiveControl as Tedit) do
begin
//ну сам сообразишь что
end
end;

Цитата:
Просьба:
Может кто поможет написать такой текстовой компанент с указанным обработчиком (кодом)

"Все б вам, хирургам, резать" (с) анекдот
Автор: RomanTim
Дата сообщения: 15.10.2007 08:50
DmitryKz
Так сохраняй их куда-нибудь: можно в реестр, но лучше в файл, формат - как удобней, можно XML, можно просто текст.
Автор: dmit000
Дата сообщения: 15.10.2007 18:00
SergeBS
СПАСИБО

RedPromo
Всё нормально просто не хочу каждый раз вставлять обработчик KeyPress. Просто завёл бы текстовое поле с таким обработчиком - вставил и не думал бы больше про корректный ввод данных - было бы очень даже нее дурно, но нужно писать компанент, а я не знаю с чего начать.

Буду делать как SergeBS подсказал.

СПАСИБО
Автор: RedPromo
Дата сообщения: 15.10.2007 23:29
dmit000
Тебе решать, просто не так это сложно как тебе кажется, да и такой подход ИМНО гибче, если правильно написать.
Автор: dmit000
Дата сообщения: 16.10.2007 10:34
RedPromo
Ты прав. Просто меня всё это напрягает немного.
-----------------------------------------------------------

Извеняюсь, что вопрос не по программированию.

В инете нашёл текст компанента (модифицированный TEdit) для ввода в текстовое поле только чисел и одного разделителя.

В тексте мне всё понятно. Сохранил его как ххххх.pas файл. При компиляции компанента выдаётся ошибка "не найден файл ххххх.dcu".

Чего делаю не так? Помогите кто чем может
Автор: DmitryKz
Дата сообщения: 16.10.2007 11:08
Подскажите, существует ли кантрол наподобие RichEdit, но который позволял бы выводить текст с выравниванием по ширине?
Автор: RedPromo
Дата сообщения: 16.10.2007 11:16
dmit000
А ты добавил его себе в проект, или просто подключил через Uses.
Автор: greenpc
Дата сообщения: 16.10.2007 11:33
DmitryKz
TRichView _http://www.trichview.ru/
но это http://forum.ru-board.com/topic.cgi?forum=35&topic=35615
Автор: dmit000
Дата сообщения: 16.10.2007 20:26
RedPromo
не я никуда этот пас файл не включал. просто имея его хочу получить компанент. и не получается.
Автор: Maks150988
Дата сообщения: 16.10.2007 22:15
Товарищи, выручайте. Хочется заиметь LENIN INC WIN32API Library v1.2. есть версия 1.1, но в версии 1.2 много нового. У кого есть - поделитесь только исходниками, а не всей лабудой ну или выложите у кого есть это чудо, как на кнопку совать картинку + надпись и в меню также. Премного благодарен.
Автор: RedPromo
Дата сообщения: 16.10.2007 23:33
dmit000
Ну так в этом то и проблема, если ты хочеш что бы он появился на твоей палитре визуальных компонентов, то нужно его туда добавить (если нужно подскажу как), если же ты создаеш компнент в рантайм, то включи в проект файл исходника компонента что-бы он тоже откомпилился.
Автор: dmit000
Дата сообщения: 17.10.2007 06:15
RedPromo
Вечером текст этого pas файла выложу. Вчера им дельфи завалил. Блин. Откомпилировать не удалось
Автор: relictus
Дата сообщения: 17.10.2007 07:10
Maks150988
LENIN INC WIN32API Library v1.2
Автор: SergeBS
Дата сообщения: 17.10.2007 08:32
dmit000
У меня до сих пор одна непонятность осталась: чем тебе TMaskEdit не угодил? И даже если он не подходит, то в RxLib есть TCurrencyEdit, который за тебя даже р./$ нарисует после ввода. Если попросишь.
Автор: dmit000
Дата сообщения: 17.10.2007 10:15
SergeBS

Не нашёл в TMaskEdit возможность ввода только цифр и одного разделителя. Может плохо искал. сегодня ещё посмотрю.

Залей пожалуйсто кудани будь RxLib. Извеняюсь что просьбы не в топике по коммерческим компанентам
Автор: relictus
Дата сообщения: 17.10.2007 10:37
dmit000
Rx Library for Delphi
PS RxLib - не коммерческая биб-ка
Автор: DmitryKz
Дата сообщения: 17.10.2007 11:37
Объясните, плиз, деревне, как работать с двумя формами. Одна форма вызывает другую (методом ShowModal). В этой вызванной форме есть кнопки Cancel и Ok. Если была нажата Ok, то 1-я форма должна выполнить определенные действия. Как передать в 1-ю форму, какая кнопка была нажата? Искал примеры в DelphiWorld, но ничего похожего не нашел. Или может правильно было бы, если 2-я (вызванная) форма делала все действия, которые касаются отображения информациив 1-й форме. Я понимаю, что можно найти решения (ну, например, ввести переменную-флажок, но это будет, как я понимаю, дубовый метод), но хотелось бы узнать, как надо делать это правильно, как делается это в серьезных профессиональных приложениях. В крайнем случае, направьте туда, где я мог бы ознакомиться с этими нюансами (ресурс, книга...)
Автор: SergeBS
Дата сообщения: 17.10.2007 11:46
DmitryKz
ShowModal - F1 - ModalResult (пример есть)
Автор: yuish
Дата сообщения: 17.10.2007 16:00
DmitryKz
На кнопку ОК в ModalResult ставишь mrOK.
В родительской форме:

Application.CreateForm(Tfrm_unit2, Frm_unit2);
with Frm_unit2 do
try
if ShowModal = mrOk then begin
// тут действия по ОК
end else begin
//тут по отмене или ничего
end;
finally
Free;
end;

end;
Автор: vserd
Дата сообщения: 17.10.2007 16:52

Цитата:
Application.CreateForm(Tfrm_unit2, Frm_unit2);

А это зачем???

Что Frm_unit2:=Tfrm_unit2.create(Self);
или
with Tfrm_unit2.create(Self) do begin
.......
end;
нельзя написать?
Автор: dmit000
Дата сообщения: 17.10.2007 16:59
relictus
спасибо за ссылку
Автор: ymg2000
Дата сообщения: 17.10.2007 18:00

Цитата:
Что Frm_unit2:=Tfrm_unit2.create(Self);
или
with Tfrm_unit2.create(Self) do begin
.......
end;
нельзя написать?

Можно, если вызываешь из метода и Self - владелец для Frm_unit2.
Если владелец по каким-то причинам Application, а не родительская форма - то
Цитата:
Application.CreateForm(Tfrm_unit2, Frm_unit2);
.
Обычно не принципиально.

Автор: nuker2015
Дата сообщения: 17.10.2007 19:11

Цитата:
На кнопку ОК в ModalResult ставишь mrOK.
В родительской форме:
Application.CreateForm(Tfrm_unit2, Frm_unit2);
with Frm_unit2 do try
if ShowModal = mrOk then begin
// тут действия по ОК
end else begin
//тут по отмене или ничего
end;
finally Free; end; end;

Все верно, но для читабельности кода лучше заменить на CASE
Автор: Maks150988
Дата сообщения: 18.10.2007 00:23
relictus
ммм... а можно тогда все исходники этой библиотеки? не только pas файлы так сказать... модет там что-нибудь новое есть... скажите каков объем будет и если что - скачаю.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


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