Вопрос № 85672: Здравствуйте уважаемые эксперты!Понадобилось мне в приложении сделать многострочный заголовок (только заголовок)StringGrid,увидел у вас в рассылки вопрос 83498 и в нём вот такой код http://delphiworld.narod.ru/base/sg_multilines.html ,всё меня в нём ...Вопрос № 85690: Здравствуйте ув эксперты.
Подскажите пожалуйста,как можно миллисекунды преобразовать в секунды и минуты?...Вопрос № 85693: Здравствуйте уважаемые эксперты!
Помогите пожалуйста разобраться с таким вопросом. Имеется сетка DBGrid, у нее есть popup menu. Мне нужно было, чтобы сетка поддерживала drag-and-drop. Я установил свойство DRagMode сетки в dmManual, т. к. при dmAu...Вопрос № 85714: TMonthCalendar & TDateTimePicker
у меня есть 3 надписи. как внеси в каждую по отдельности дату, месяц, год...Вопрос № 85715: Ув.эксперты, вопрос: в примере (см.ниже) не работают методы динамически созданных компонент
FCCreate и CTTimer? Как сделать, что бы они выполнялись? Может их надо как-то где-то зарегистрировать?
Заранее спасибо.
unit Unit1;
inter...Вопрос № 85805: Добрый вечер
Кинула на форму ListView и кнопку.
В ListView в инспекторе сделал вот так:
ListView1.Checkboxes := true;
ListView1.ViewStyle := vsReport;
Подскажите как всем Items в ListView поставить галочки, при нажа...Вопрос № 85807: А можно сделать так чтобы у другой созданной формы как и у главной на панели задач появилась своя кнопка? ...Вопрос № 85808: Здравствуйте.
Подскажите пожалуйста как узнать интервал времени в миллисекундах прошедший между нажатием Btn1 и Btn2?
Как отследить количество нажатий Btn3 и по 3 нажатию выполнить процедуру?
Надеюсь на Вашу помощь....
Вопрос № 85.672
Здравствуйте уважаемые эксперты!Понадобилось мне в приложении сделать многострочный заголовок (только заголовок)StringGrid,увидел у вас в рассылки вопрос 83498 и в нём вот такой код http://delphiworld.narod.ru/base/sg_multilines.html ,всё меня в нём устраивает,кроме того ,что текст остаётся не сцентрированным.Помогите доработать этот код.Если коротко надо сцентрированный текст во всей таблице,многострочный заголовок с переносом строки только по запятой и выводящийся жирным шрифтом.
Отправлен: 06.05.2007, 10:34
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss
Здравствуйте, GAZOT!
В приложении приведен измененный код.
Изменение основано на испрользовании функции WinAPI DrawText, у которого можно устанавливать дополнительные флаги (в примере DT_CENTER).
newRect - временный объект, нужный для отрисовки текста в определенной области (сравните два кода - мой и тот, что на сайте, - и Вы поймете откуда он взялся)
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 06.05.2007, 12:16
Вопрос № 85.690
Здравствуйте ув эксперты.
Подскажите пожалуйста,как можно миллисекунды преобразовать в секунды и минуты?
Отправлен: 06.05.2007, 12:51
Вопрос задал: 3dcvir (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Секунды: sec:= (ms div 1000) mod 60;
минуты: min:= ms div 60000;
Удачи!
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 06.05.2007, 13:15 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ.
Вопрос № 85.693
Здравствуйте уважаемые эксперты!
Помогите пожалуйста разобраться с таким вопросом. Имеется сетка DBGrid, у нее есть popup menu. Мне нужно было, чтобы сетка поддерживала drag-and-drop. Я установил свойство DRagMode сетки в dmManual, т. к. при dmAutomatic не происходила установка курсора на нужно строке, и в обработчике OnColEnter написал: BeginDrag(false, 5). Но теперь drag-and-drop и popup menu не желают срабатывать из одного столбца сетки, то есть drag-and-drop работает из 2, 3, 4 столбцов сетки, а popup menu - только из первого. В чем моя
ошибка?
Заранее спасибо!
Отправлен: 06.05.2007, 13:24
Вопрос задал: Tanir2404 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Tanir2404!
Ошибка ключевая - Вы пытаетесь использовать DBGrid как элемент манипулирования данными. На самом деле - это только элемент отображения таблицы.
Для того чтобы drag-and-drop нормально и стабильно работал нужно из событий BeginDrag и DragDown брать ID строки и имя поля и формировать SQL-запрос к БД, делать commit и обновлять состояние DBGrid.
В противном случае могут быть ошибки, связанные с кэшированием, которые очень сложно отловить.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
TMonthCalendar & TDateTimePicker
у меня есть 3 надписи. как внеси в каждую по отдельности дату, месяц, год
Приложение:
Отправлен: 06.05.2007, 16:16
Вопрос задал: VVV_1984
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Gh0stik
Здравствуйте, VVV_1984!
Насколько я понял Вам необходимо вывести ту дату которая выбрана в соответствующем компоненте. Если вы вывод собираетесь организовывать через компоненты TLabel, то код для TMonthCalendar будет такой:
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
Label1.Caption:=FormatDateTime('dd',MonthCalendar1.Date);
Label2.Caption:=FormatDateTime('mmmm',MonthCalendar1.Date);
Label3.Caption:=FormatDateTime('yyyy',MonthCalendar1.Date);
end;
А для TDateTimePicker соответственно:
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
Label1.Caption:=FormatDateTime('dd',DateTimePicker1.Date);
Label2.Caption:=FormatDateTime('mmmm',DateTimePicker1.Date);
Label3.Caption:=FormatDateTime('yyyy',DateTimePicker1.Date);
end;
Мы просто используем формат вывода для даты...
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 06.05.2007, 17:06
Не написан один существенный момент данные функции не работают без подключения модуля DateUtils (uses DateUtils;)!!! Edited by Gh0stik
Ответ отправил: LEXASOFT (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 23:18
Вопрос № 85.715
Ув.эксперты, вопрос: в примере (см.ниже) не работают методы динамически созданных компонент
FCCreate и CTTimer? Как сделать, что бы они выполнялись? Может их надо как-то где-то зарегистрировать?
Заранее спасибо.
unit Unit1;
type TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
var Form1: TForm1;
C: TC;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
C:=TC.Create;//создаем объект
C.FC:=TForm.Create(nil);//форму, описанную в нем
C.FC.Caption:='форма';
C.CT:=TTimer.Create(C.FC);//таймер
C.CT.Interval:=2000;
C.CT.Enabled:=true;//включаем таймер
end;
procedure TC.FCCreate(Sender: TObject);
begin
Showmessage('formcreated');
end;
procedure TC.CTTimer(Sender: TObject);
begin
Showmessage('ontimer');
end;
Они не работают потому что Вы к ним не обращаетесь. В приложении смотрите самый простой вариант преобразования вашего кода.
Просто перенесите создание формы и создание таймера в FCCreate и CTTimer соответственно.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 06.05.2007, 18:22 Оценка за ответ: 5 Комментарий оценки: Спасибо. Все работает.
Отвечает: din
Здравствуйте, Ренат Байрамгулов!
В случае с событием OnCreate нельзя поступить также как и с событием OnTimer, потому что оно генерируется при создании объекта, а до его создания мы переопределить его также не сможем. В общем все в приложении. Сверьте со своим кодом и посмотрите что изменено.
P.S.
Вы знаете когда вы создаете новую форму и думаю нет необходимости вешать какой-либо код на событие OnCreate, его ведь можно выполнить в том же месте где Вы форму и создаете, подумайте над этим.
Удачи!
Приложение:
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 06.05.2007, 20:44
Отвечает: monah
Здравствуйте, Ренат Байрамгулов!
Лучше свой класс выделить в отдельный модуль.
Смотрите, приложение.
В Вашей программе достаточно объявить переменную этого класса и вызвать метод Create .
Приложение:
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 08.05.2007, 09:53 Оценка за ответ: 5 Комментарий оценки: нет слов!
Вопрос № 85.805
Добрый вечер
Кинула на форму ListView и кнопку.
В ListView в инспекторе сделал вот так:
ListView1.Checkboxes := true;
ListView1.ViewStyle := vsReport;
Подскажите как всем Items в ListView поставить галочки, при нажатии на кнопку ?
В приложении указан пример установки всех "галочек" при нажатии на кнопку Button1.
Если Вам нужно установить только одну галочку, то метод такой: ListView1.Items[i].Checked:= True;
Если нужно снять, то: ListView1.Items[i].Checked:= False;
i - номер строки, в которой нужно установить/снять "галочку". Номер первой строки - 0.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 07.05.2007, 01:25
Отвечает: xXx
Здравствуйте, Павлова Анна Николаевна! Повторный ответ.
В приложении кусок кода, который помечает все строки компонента галочками...
(edited by Ерёмин А.)
Приложение:
Ответ отправил: xXx (статус: 6-ой класс)
Ответ отправлен: 07.05.2007, 11:47
Вопрос № 85.807
А можно сделать так чтобы у другой созданной формы как и у главной на панели задач появилась своя кнопка?
Вам достаточно прописать в обработчике OnCreate формы которую Вы вызываете такой оператор: ParentWindow:=GetDesktopWindow;
В приложении смотрите модули проекта.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 07.05.2007, 09:57 Оценка за ответ: 5 Комментарий оценки: Вот нашёл ещё один вариант. Отличие - при щелке по кнопке на панели задач окно становится активным.
procedure TForm2.FormCreate(Sender: TObject); begin SetWindowLong(Handle,
GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW); end;
Вопрос № 85.808
Здравствуйте.
Подскажите пожалуйста как узнать интервал времени в миллисекундах прошедший между нажатием Btn1 и Btn2?
Как отследить количество нажатий Btn3 и по 3 нажатию выполнить процедуру?
Надеюсь на Вашу помощь.
Ответ достаточно простой. См. пример в приложении.
Использовал свойства кнопок Tag, чтобы сократить количество используемых переменных. Если Вам это не удобно, то можно завести какие-либо переменные.
По нажатию на кнопку Btn2, результат (интервал времени в миллисекундах) выводится в Label3.
При третьем нажатии на кнопку Btn3, в примере выводится соответствующее сообщение. Вы же просто подмените вывод сообщения на нужную процедуру.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 07.05.2007, 01:14 Оценка за ответ: 5 Комментарий оценки: Спасибо все работает.Интересует только один вопрос- на сколько велика погрешность в определении интервала времени.
Отвечает: W@NDeReR
Здравствуйте, Шмаров Сергей!
Ставите на форму Timer с вкладки System, свойство Interval ставите = 1, св-во Enabled=False
При нажатии на Btn1 включаем таймер:
Timer1.enabled:=True;
При нажатии на Btn2 выключаем таймер:
Timer1.enabled:=False;
Теперь обьявите 2-е глобальные переменные типа Integer я взял i и o
Дважды кликните по Таймеру и напишите следующее:
i:=i+1; // Увеличивает значение переменной i на 1 каждую милисекунду
Label1.Caption:=IntTOstr(i); //Записывает значение i в Label
Теперь про нажатия 3-и раза:
При нажатии на Btn3 написать следующее:
o:=o+1; // Увеличивает значение переменной i на 1 каждое нажатие на кнопку
if o=3 then //если o=3 то выполнить процедуру
begin
showMessage('Btn3 нажат 3 раза');//У меня воводиться сообщение, у вас может быть что то другое
o:=0; //онуляем переменную o чтобы еще раз можно было нажать 3-и раза
end;
--------- Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 08:37 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ все работает,только хотелось бы уточнить какова будет погрешность таймера.