Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 77
от 24.03.2005, 20:30

Администратор:Калашников О.А.
В номере:Вопросов: 3, Ответов: 10


Вопрос № 18462: Здравствуйте уважаемые эксперты ! У меня такая ситуация: объявляю массив кнопок BitBtn MyCtrlBttns: array[1..10] of TBitBtn; затем создаю их for i:=1 to 10 do begin MyCtrlBttns[i]:=TBitBtn.Create(Self); MyCtrlBttns...
Вопрос № 18463: Здравствуйте, эксперты. Вопрос такой: как можно вывести переменную типа TDateTime c точностью до миллисекунды. С уважением, Licha....
Вопрос № 18466: Здравствуйте, уважаемые эксперты! У меня возникла проблема следующего характера: есть база данных MS Access и есть некоторый файл формата Excel (сформированная и отформатированная форма-бланк). Необходимо следующее: занести в заданную ячейку(и) E...

Вопрос № 18462
Здравствуйте уважаемые эксперты !
У меня такая ситуация:
объявляю массив кнопок BitBtn
MyCtrlBttns: array[1..10] of TBitBtn;
затем создаю их
for i:=1 to 10 do
begin
MyCtrlBttns[i]:=TBitBtn.Create(Self);
MyCtrlBttns[i].Parent:=ContPanel;
MyCtrlBttns[i].Align:=alTop;
MyCtrlBttns[i].Caption:='Пуск';
MyCtrlBttns[i].Height:=25;
MyCtrlBttns[i].Width:=75;
MyCtrlBttns[i].Font.Size:=10;
MyCtrlBttns[i].Glyph.LoadFromFile('find.bmp');
MyCtrlBttns[i].Layout:=blGlyphLeft;
MyCtrlBttns[i].NumGlyphs:=2;
MyCtrlBttns[i].Spacing:=5;
ContPanel.Height:=ContPanel.Height+25;
end;
А теперь как мне отлавливать нажатия на них и как определять какая
нажата ?
Помогите плиз.
Заранее спасибо.
Дельфи 6.
Отправлен: 18.03.2005, 23:10
Вопрос задал: Муратов Радик Анатольевич (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Bochvarov NikB
Здравствуйте, Муратов Радик Анатольевич!
1. -------
MyCtrlBttns[i].OnClick := ProcClick[i]; // Все :)
2. -------
MyCtrlBttns[i].OnClick := ProcClick;
...
procedure xxxx.ProcClick(Sender: tObject);
begin
if Sender=MyCtrlBttns[1] then begin
end;
...
3. ----------
MyCtrlBttns[i].Tag := i;
MyCtrlBttns[i].OnClick := ProcClick;
...
procedure xxxx.ProcClick(Sender: tObject);
begin
if (Sender<>nil) and (Sender is tBitBtn) then begin
case tBitBtn(Sender).Tag of
...
end;
end;
...
---------------
----------
И еще: тебе alTop не поможет: надо Top:=25*(i-1); например :)
Ответ отправил: Bochvarov NikB (статус: 1-ый класс)
Отправлен: 19.03.2005, 00:26

Отвечает: Васильев Павел
Здравствуйте, Муратов Радик Анатольевич!
Либо если ты хочешь обрабатывать все кнопки в одной процедуре, то указывай при создание кнопки свойство Tag, а потом можешь его обрабатывать в своей процедуре OnClick. Например ты можешь получить доступ к своей кнопке в массиве: MyCtrlBttns[(Sender as TBitBtn).Tag].
Успеха!
Ответ отправил: Васильев Павел (статус: 1-ый класс)
Отправлен: 19.03.2005, 00:40

Отвечает: michael91
Здравствуйте, Муратов Радик Анатольевич!
В класс формы вставьте обработчик(и) нажатия
и различным свойствам TBitBtn, отвечающим за обработку событий (напр. onClick, onMouseMove) присвойте ссылку на созданную процедуру.
всем кнопкам можно присвоить разные обработчики.

Приложение:

Ответ отправил: michael91 (статус: 2-ой класс)
Отправлен: 19.03.2005, 16:36

Отвечает: sir henry
Здравствуйте, Муратов Радик Анатольевич!
Присвойте свойству OnClick (т.е. событию на нажатие) какую-нибудь свою процедуру в которой и опишите все, что Вам нужно.
MyCtrlBttns[i].OnClick:=MyFuckProcedure;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 21.03.2005, 12:51


Вопрос № 18463
Здравствуйте, эксперты.
Вопрос такой: как можно вывести переменную типа TDateTime c точностью до миллисекунды.
С уважением, Licha.
Отправлен: 18.03.2005, 23:44
Вопрос задал: Lichkaty Alexander (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: Bochvarov NikB
Здравствуйте, Lichkaty Alexander!
Считаеш сколко миллисекунд в суток x=(24*60*60*1000);
s:=IntToStr((x*frac(aDtTm)) mod 1000);
while length(s)<3 do s:='0'+s; //Ставиш 0 (несколко, если нужно) - LeadingZero
s:=DateTimeToString(aDtTm)+'.'+s;
Ответ отправил: Bochvarov NikB (статус: 1-ый класс)
Отправлен: 19.03.2005, 00:56

Отвечает: Васильев Павел
Здравствуйте, Lichkaty Alexander!
Для текущего времени:
FormatDateTime('dd/mm/yyyy hh:nn:ss:zzz', Now);
Ответ отправил: Васильев Павел (статус: 1-ый класс)
Отправлен: 19.03.2005, 01:00

Отвечает: michael91
Здравствуйте, Lichkaty Alexander!
Функция DateTimeToString с особым форматированием ('dd/mm/yyyy hh:mm:ss:zzz')
где zzz - миллисекунды
Подробнее о форматировании даты/времени в справке Delphi ключевые слова:
Date-Time Format Strings

Приложение:

Ответ отправил: michael91 (статус: 2-ой класс)
Отправлен: 19.03.2005, 16:36

Отвечает: Malish
Здравствуйте, Lichkaty Alexander!
Как я понял надо вывести переменную типа TDateTime на экран c точностью до миллисекунды, если да то можно так:
с помощью функции
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
Format - строка, определяющая формат возвращаемого строкового выражения;
DateTime - понятно что.
Строку Format можно крутить-вертеть как хочется (много возможностей) например :
FormatDateTime('dddd, dirrmim ,yyyy, hh:nn:ss:zz ');
Есть еще такая процедура :
procedure DecodeTime(Time : TDateTime; var Hour, Min, Sec, MSec : Word);
преобразовывает время типа TDateTime в составляющие.
Надеюсь я не опаздал!!! ;)
Ответ отправил: Malish (статус: 5-ый класс)
Отправлен: 20.03.2005, 01:00

Отвечает: sir henry
Здравствуйте, Lichkaty Alexander!
Думаю, Вам поможет эта функция:
procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
TSystemTime - это запись, в которой содержаться и милисекунды.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 21.03.2005, 12:56


Вопрос № 18466
Здравствуйте, уважаемые эксперты!
У меня возникла проблема следующего характера: есть база данных MS Access и есть некоторый файл формата Excel (сформированная и отформатированная форма-бланк). Необходимо следующее: занести в заданную ячейку(и) Excel файла данные из поля(ей) записи(ей) базы данных, выбранных по некоторому критерию (на данном этапе не принципиальном).
Вопрос в следующем: возможна ли реализация этого на Delphi и если "да", то как?
P.S. Если возможно, то приведите пример или ссылку.
Отправлен: 19.03.2005, 00:55
Вопрос задал: DarkTemplar (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: sir henry
Здравствуйте, DarkTemplar!
В Дельфи, начиная с 5 версии есть специальные компоненты для работы с офисом( word, excel, access). Access открывается как обычная БД, тут вообще нет никакой сложности. Далее, либо используется компонента для книги Excel, либо вручную, с помощью переменой типа Variant, открывается эта книга и поячеисто заносятся в нее данные из БД.
Однако, если данных много, то вывод будет идти очень долго. Более быстро можно сделать с помощью массива типа Variant.
См. приложение.
Загляните на сайт www.delphikingdom.com, там было довольно много статеек по поводу ощения Дельфи и Офиса.

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 21.03.2005, 13:09


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться

В избранное