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

» Вопросы по Delphi

Автор: YurikGL
Дата сообщения: 03.12.2005 20:12
>Скажите пожалуйста, как сделать так, чтобы результаты выводились не друг за другом
>в строчку, а чтобы в конце как бы нажимался <Enter>???

Нужно каждый раз делать memo1.lines.add('Новая строчка')

>Например имеется 25 TEdit елементов с названиями Edit1, Edit2... можно ли как-то при
>помощи цыкла их значения считывать например в масив , а то вручную запарно всё это
>делать. Так, чтобы

что-то типа
for i:=1 to 25 do
with FindComponent('edit'+intToStr(i)) as TEdit do
text:='aaa';

>Я с акцессом не работал, поэтому не в курсе. Просто в данном случае, когда мы
> пытаемся запустить с другого компа уже открытый в другом месте файл, ничего не
>делается...

Лучше не перносить на другую СУБД (если только не планируется расширение больше чем на 3-5 человек) а написать клиента для самого Access-а используя ADO-компоненты. С файлом mdb могут одновременно работать несколько таких клиентов.
Автор: chaugi
Дата сообщения: 03.12.2005 22:11
YurikGL
Спасибо.
Автор: Admin CSB
Дата сообщения: 04.12.2005 01:36
YurikGL

Цитата:
Лучше не перносить на другую СУБД (если только не планируется расширение больше чем на 3-5 человек) а написать клиента для самого Access-а используя ADO-компоненты. С файлом mdb могут одновременно работать несколько таких клиентов.

Спасибо, за подсказку.
Тогда еще вопрос - если так сделать, устанавливать дополнительно ничего не нужно будет? Кроме самого клиента.
Автор: Farkhad
Дата сообщения: 04.12.2005 16:16

Цитата:
2Polkan
Форма - это окно приложения. На ней могут располагаться любые компоненты, включая и фреймы.
Фрейм тоже может содержать различные компоненты и внешне похож на форму. Но нужен для того, чтобы оптимизировать процесс разработки. Если у тебя есть на многих формах, скажем по лабеле с эдитой, причем расположены они всегда в одном месте и обрабатываются везде одинаково, то здесь самое место для фрейма. Ложишь лабелу с эдитой на фрейм, а на формы ложишь уже сам фрейм. Что это дает? Обработку событий лабелы с эдитой ты пишешь всего один раз - для фрейма.
Что же касается твоего случая, то ответ прост - если всегда будетя вызываться одно окно, то делай форму, если же кроме этого окна есть куда еще положить такую эдиту - делай фрейм.


Скажите, как ложить на форму фрейм?
Автор: GloThin
Дата сообщения: 04.12.2005 21:19
Farkhad

Цитата:
Скажите, как ложить на форму фрейм?

Создаешь фрейм: Меню FIle -> New -> Frame.
Потом берешь компонент Frames со стандартной палитры и ложишь на форму
Автор: YurikGL
Дата сообщения: 04.12.2005 21:48

Цитата:
Спасибо, за подсказку.
Тогда еще вопрос - если так сделать, устанавливать дополнительно ничего не нужно будет? Кроме самого клиента.


Теоретически, нужно наличие соответсвующего jet-а. Но на практике я ни разу не встречался с системой, где-бы его не было. В WinXP он, по моему, вообще встроен.
Так что можно абсолютно уверенно просто копировать клиента и mdb-к на другой компьютер (при условии, что в это время с mdb-м никто ничего не делает)
Автор: Admin CSB
Дата сообщения: 04.12.2005 23:33
YurikGL

Цитата:
Так что можно абсолютно уверенно просто копировать клиента и mdb-к на другой компьютер (при условии, что в это время с mdb-м никто ничего не делает)

Мне нужно, чтобы несколько человек по сети работали с одной и той же записной книгой. Тоесть реализация "каждому свое" не катит. Или я тебя не правильно понял?
Автор: MrZeRo
Дата сообщения: 05.12.2005 08:45
Admin CSB
Можно создать, например, 2 MDB-файла: в одном клиентская часть, в другом - данные. Клиентские части на клиентских машинах, ссылаются на один общий MDB-файл с данными, который располагается на общедоступном ресурсе. Или в одном MDB-файле - и данные, и клиентская часть, это все расположено на общедоступном ресурсе.
Автор: Admin CSB
Дата сообщения: 05.12.2005 09:03
MrZeRo

Цитата:
Или в одном MDB-файле - и данные, и клиентская часть, это все расположено на общедоступном ресурсе.

Вот такой вариант меня интересует. А не будет проблем с тем, что несколько человек к нему цепляются?
Автор: MrZeRo
Дата сообщения: 05.12.2005 09:21
Admin CSB
Если не несколько десятков, а именно несколько, то не будет.
Автор: nikto2
Дата сообщения: 05.12.2005 12:53
Кто знает как быстро подсчитать crc32 файла. Взял несколько примеров с delphiworld но если по цыклу узнать crc32 1000 файлов то ето занимает очень много времени. У меня такая ситуацыя: надо искать все файли по указаному пути и в динамический масив записывать crc32 всех файлов.
Автор: GoldSwan
Дата сообщения: 05.12.2005 14:26
Кто-нибудь использует MemCheck (_http://v.mahon.free.fr/pro/freeware/memcheck/) в поиске утечек памяти?
Ничего не понял из описания
Подскажите, плз, порядок работы с ним. Все сделал как написано, а где-чего смотреть-читать лог - не понимаю...
Заранее благодарен!!!
---------------------------
P.S. Спасибо, сам разобрался...
Автор: chaugi
Дата сообщения: 05.12.2005 22:54
Вопрос. Имеется большое колличество TEdit элементов - т.е. матрица. Как правильно сделать одну общую процедуру (если это возможно), так, чтобы при наведении на выбранное колличество TEdit элементов, у на них автоматически преключался фокус и выделялось всё содержимое. Просто для каждого элемента прописывать одну и туже процедуру OnClick это кащунство.

Спасибо.
З.Ы. Обьясните как для новичка.
Автор: YurikGL
Дата сообщения: 05.12.2005 22:55

Цитата:
Мне нужно, чтобы несколько человек по сети работали с одной и той же записной книгой. Тоесть реализация "каждому свое" не катит. Или я тебя не правильно понял?


Пишется клиент на Delphi к базе Access с использованием ADO. У всех клиентов указывается одна и та же база (т.е. один и тот же mdb) через сетевой путь.


Добавлено:

Цитата:
Вопрос. Имеется большое колличество TEdit элементов - т.е. матрица. Как правильно сделать одну общую процедуру (если это возможно), так, чтобы при наведении на выбранное колличество TEdit элементов, у на них автоматически преключался фокус и выделялось всё содержимое. Просто для каждого элемента прописывать одну и туже процедуру OnClick это кащунство.

Спасибо.
З.Ы. Обьясните как для новичка.

Насколько помню, процедуры можно присваивать... т.е. одному и тому же действию OnClick толпы компонентов присвоить какую-то свою процедуру и она будет выполняться. Ну или можно что-бы твои Едиты были типа TMyEdit который дочерний от TEdit и котором определено твое действие.
Автор: chaugi
Дата сообщения: 05.12.2005 23:54

Цитата:
Насколько помню, процедуры можно присваивать... т.е. одному и тому же действию OnClick толпы компонентов присвоить какую-то свою процедуру и она будет выполняться. Ну или можно что-бы твои Едиты были типа TMyEdit который дочерний от TEdit и котором определено твое действие.

Это понятно что я могу пометить все нужные элементы и в properties -> OnMove выбрать всем выполнять одну и туже процедуру. НО, как её правильно прописать, чтобы именно тому элементу который вызовал данною процедуру была присвоена команда SetFocus???

Т.е помечаю все TEdit элементы, два раза кликаю на OnMove, Delphi автоматически создаёт нужную процедуру, но вот как написать что-То типо Current.SetFocus; где Current будет тот TEdit который вызывает эту процедуру....

Спасибо.
Автор: ShIvADeSt
Дата сообщения: 06.12.2005 00:49
chaugi

Цитата:
Т.е помечаю все TEdit элементы, два раза кликаю на OnMove, Delphi автоматически создаёт нужную процедуру, но вот как написать что-То типо Current.SetFocus; где Current будет тот TEdit который вызывает эту процедуру....

(Sender as TEdit).SetFocus; примерно так
Автор: chaugi
Дата сообщения: 06.12.2005 01:35
ShIvADeSt
Работает - Спасибо.

Добавлено:
Ещё пару вопросов:
1) Как ужесточить условия ввода в TEdit, например чтобы только цыфры можно было вводить, чтобы сразу во время введения, а не потом.
2) Как заставить пользователя не оставляnь незаполненные поля в TEdit и TComboBox, иначе программа эррор выдаёт.

Спасибо.
Автор: Admin CSB
Дата сообщения: 06.12.2005 03:02
chaugi
1)Либо обработчик с проверкой ввода на онкейпрес, либо маскэдит юзать...
2)Проверка перед обработкой данных...

Добавлено:
YurikGL

Цитата:
Пишется клиент на Delphi к базе Access с использованием ADO. У всех клиентов указывается одна и та же база (т.е. один и тот же mdb) через сетевой путь.

Спасибо за подсказку.
Автор: chaugi
Дата сообщения: 06.12.2005 11:41
Admin CSB

Цитата:
1)Либо обработчик с проверкой ввода на онкейпрес, либо маскэдит юзать...

Это получилось.
А вот проверку на то чтобы елемента TComboBox не оставались пустыми сделать не могу. Не знаю как подобраться. ComboBox1.Items.Text=''; Не работает, как задать чтобы он искал, что они не выбранные (что-то вроде опции Changed=true)...
Нужно чтобы если не выбранные, т.е. пустые, то чтобы было присвоенно первое значение из списка и всё.

Спасиобо.
Автор: A_V
Дата сообщения: 06.12.2005 11:55
chaugi
можно ComboBox1.Text = '', лучше ComboBox1.ItemIndex=-1
Автор: chaugi
Дата сообщения: 06.12.2005 13:06
A_V
Помогло-спасибо.
Автор: evle
Дата сообщения: 07.12.2005 14:31
Кто-нибудь занимался динамическим созданием TAction с занесением в ActionManager? Нужно сделать Action для каждого файла в папке, чтобы пользователь мог добавить его в Toolbar. Сделал через ActionManager.AddAction, но он требует какой-то ActionClient, а для чего он нужен из хелпа не понятно. Удалось добавить Action'ы в Toolbar, но нужно чтобы они просто были в списке.
Автор: Pinocchio
Дата сообщения: 07.12.2005 15:06

Цитата:
Inserts a new action into an existing actionband.

Delphi syntax:
function
AddAction(AnAction: TCustomAction; AClient: TActionClient; After: Boolean = True): TActionClientItem;

Description
AddAction adds an action to an action band. Use this method to insert a new action into an existing actionband. Use FindItemByCaption and FindItemByAction methods to locate the position at which you want to insert the new item.

Ты даёшь акцию а получаешь клиента, а что не понятно?
Вместо After можно not Before. Непомню. Подробности можно в личку.
Автор: Farkhad
Дата сообщения: 07.12.2005 16:59
Имеется главная форма с меню.
При клике по пункту меню в этой форме должен загружаться какой-то фрейм, н-р, Frame2.

Как это реализовать?

Т.е. загружается главная форма, отображается некий стартовый фрейм (Frame1).
По клику на пункт Проекты/Статистика, загружается фрейм Frame2. При клике на Управлени пользователями/Новый пользователь загружается фрейм Frame3...
Автор: evle
Дата сообщения: 07.12.2005 18:06
Pinocchio

Цитата:
AClient: TActionClient

Сюда что передавать?
Автор: A_V
Дата сообщения: 07.12.2005 21:07
Farkhad
а в чем проблема?

var Frame :TFrame;
...
Frame:=TFrame2.Create(Self);
Frame.Parent:=Form1;
...
if Assigned(Frame) then Frame.Free;
Автор: DimonXP
Дата сообщения: 08.12.2005 08:06
У кого нибудь встречался такой трабл:
При попытке создать проект - Cannot locate project options for personality
Автор: Farkhad
Дата сообщения: 08.12.2005 13:37
A_V
Не понимаю я.
Даже то, что ты написал
Автор: Pinocchio
Дата сообщения: 08.12.2005 13:40
evle
Специално для Вас спустился вниз, там обнаружил папку
[Delphi]\Demos\ActionBands\DynaActionBands.

Каталог Demos источник массы полезной информации.
Автор: vserd
Дата сообщения: 09.12.2005 12:42
Farkhad

Цитата:
var Frame :TFrame;
...
Frame:=TFrame2.Create(Self);
Frame.Parent:=Form1;
...
if Assigned(Frame) then Frame.Free;
Не понимаю я.

Чего тут не понятно?
var Frame объявление переменной
Frame:=TFrame2.Create(Self); создание объекта
Frame.Parent:=Form1; На каком контроле будет отображаться фрейм.

правильный код такой
if Assigned(Frame) then begin Frame.Free; Frame:= nil; end;
или такой
if Assigned(Frame) then FreeAndNil(Frame);
Если фрейм был действительно создан, тогда уничтожаем его.

Если это не понятно в принцыпе, тогда читайте книжки по ООП. Тотже Delph Help.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

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


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