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

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


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

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

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

Выпуск № 269
от 19.10.2005, 15:42

Администратор:Калашников О.А.
В рассылке:Подписчиков: 255, Экспертов: 44
В номере:Вопросов: 2, Ответов: 8


Вопрос № 27669: Доброго времени суток, Уважаемые Эксперты! Я новичок в Delphi, так что извините, что не так :-). 1. На форме есть N-е число картинок, необходимо что каждая из них появлялась по очереди, после определенного события, н-р: нажимаем на butto...
Вопрос № 27680: Поле в нескольких однотипных таблицах носит имя DATE, от этого не избавиться. Запросом делаю выборку по нескольким параметрам. Но не могу совладать с этим именем поля. "Ругается" на: "Invalid use of keyword Token: ? AND Line Number: 2&...

Вопрос № 27.669
Доброго времени суток, Уважаемые Эксперты!

Я новичок в Delphi, так что извините, что не так :-).
1. На форме есть N-е число картинок, необходимо что каждая из них появлялась по очереди, после определенного события, н-р: нажимаем на button1, появляется Image1, нажимаем опять на button1, появляется Image2(при этом Image1 остается). Мне кажется что необходимо организовать что-то типа счетчика, но как?
2. Необходимо сделать кнопку из картинки, что при наведении изменялась бы картинка этой кнопки. Я пробовал прописать другую картинку на событие OnMouseMove, но смена картинки происходит "отрывисто" и не всегда срабатывает. Help, plz!
Заранее благодарен.

Приложение:

Отправлен: 14.10.2005, 00:27
Вопрос задал: NIKOLLAY (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Master135
Здравствуйте, NIKOLLAY!
1)На мой взгляд проще всего на форму кинуть компонент TBevel, а на него картинки, потом спокойно обращаемся к их свойствам Visible увеличивая счетчик
var count: integer;и присваиваем ему 0
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
(Bevel1.Components[i] as TImage).Visible:=true;
inc(count);
end;
а изначально надо сделать все невидимые так:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to (Bevel1.ComponentCount-1) do
(Bevel1.Components[i] as TImage).Visible:=false;
end;
Ответ отправил: Master135 (статус: 9-ый класс)
Отправлен: 14.10.2005, 02:08
Оценка за ответ: 4

Отвечает: sir henry
Здравствуйте, NIKOLLAY!
1. Показывать картинки можно, например, с помощью метода Show, при этом предварительно проверять, видима эта картинка или нет:
В событии OnClick кнопки:
If not Image1.Visible Then
Image1.Show;
Так же и с остальными.
2. Именно при наведении, а не нажатии? Событие OnMouseMove наступает при ЛЮБОМ движении мышки над компонентом. Думаю, это не очень хорошее решение. Попробуйте смену картинки поместить в событие OnEnter. Либо, если это не будет работать (мышь все таки) в OnMouseMove введите проверку, если нужная картинка уже загружена то ничего не делать, если нет то загрузить.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 14.10.2005, 04:54
Оценка за ответ: 4
Комментарий оценки:
Спасибки

Отвечает: Ерёмин Андрей
Здравствуйте, NIKOLLAY!
1) Для начала для всех TImage следует установить Visible=False. У кнопки Button1.Tag=0. Далее, Button1.OnClick():

Button1.Tag:=Button1.Tag+1;
TImage(FindComponent('Image'+IntToStr(Button1.Tag))).Visible:=True;


Картинки должны называться Image1, Image2 и т.д.

2) Можно, конечно, пытаться своими силами, но это получится некачественно (как в описанном Вами примере). Возьмите сторонние компоненты. В JediVCL у TJvImage можно задавать разные состояния. Ещё в GlobusLib есть компонент TglGraphicButton - идеально подойдёт. Наконец, в пакете ButtonComps одна из кнопок исключительно графическая. Этот пакет имеет объём всего ~18 Кб, в то время как JediVCL - 8-9 Мб, GlobusLib - 1-2 Мб.

Удачи!
---------
Бог создал мир за семь дней и до сих пор система работает, не требуя перезагрузки, потому что у него не было необходимости поддерживать совместимость с предыдущими версиями...
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 14.10.2005, 16:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо, особенно за ответ на вопрос №2

Отвечает: Татьяна
Здравствуйте, NIKOLLAY!
2. Дело в том, что по логике надо использовать не OnMouseMove, а onMouseLeave (выход курсора из области объекта) и onMouseEnter (курсор в области объекта), однако к сожалению, эти события не определены в среде для кнопки. Но такие события определены в метке (TLabel). При желании метке можно придать функциональность и внешний вид кнопки, поэтому, возможно, это и не будет проблемой.
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 4-ый класс)
Отправлен: 14.10.2005, 17:33
Оценка за ответ: 3
Комментарий оценки:
Спасибо за участие

Отвечает: Romodos
Здравствуйте, NIKOLLAY!
Надо объявить глобальную переменную i
и в button1click написать так
inc(i);
case i of
1:image1.visible:=true;
2:imagen.visible:=true;
...
n:imagen.visible:=true;
end;

А можно объявить массив of timage
и писать так
inc(i);
image[i].visible:=true;

---------
FAQ me off!
Ответ отправил: Romodos (статус: 10-ый класс)
Отправлен: 15.10.2005, 11:39


Вопрос № 27.680
Поле в нескольких однотипных таблицах носит имя DATE, от этого не избавиться. Запросом делаю выборку по нескольким параметрам. Но не могу совладать с этим именем поля. "Ругается" на: "Invalid use of keyword Token: ? AND Line Number: 2". Советчиков много, но никто не может помочь. Заранее большое спасибо!

Приложение:

Отправлен: 14.10.2005, 10:36
Вопрос задал: Denis (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tsechoev Bagaudin
Здравствуйте, Denis!
Насколько я понял это таблицы Paradox, попробуй просто поле DATE заключить в двойные кавычки:

SELECT *
FROM Pay1 WHERE GOODS_TYPE_CODE :TYPE
AND USER_CODE :NAME
AND Pay1."DATE" BETWEEN :DAT1 AND :DAT2
UNION
SELECT *
FROM Pay2 WHERE GOODS_TYPE_CODE :TYPE
AND USER_CODE :NAME
AND Pay2."DATE" BETWEEN :DAT1 AND :DAT2
UNION
SELECT *
FROM Pay3 WHERE GOODS_TYPE_CODE :TYPE
AND USER_CODE :NAME
AND Pay3."DATE" BETWEEN :DAT1 AND :DAT2
UNION
SELECT *
FROM Pay4 WHERE GOODS_TYPE_CODE :TYPE
AND USER_CODE :NAME
AND Pay4."DATE" BETWEEN :DAT1 AND :DAT2
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 14.10.2005, 11:03
Оценка за ответ: 5

Отвечает: Lector
Здравствуйте, Denis!
в зависимости от типа БД есть несколько решений, но на некоторых может не сработать.
1. создайте синоним для таблицы и выбирайте так : <синоним>.<имя столбца>.
2. обращайтесь к стобцам, взяв их в ковычки: '<имя столбца>' или "<имя столбца>".
3. пишите просто Pay1.db.date и Pay2.db.date
Если не поможет - напишите, какая у вас БД - попробую разобраться
---------
Хочешь помочь старику - сделай вместо него.
Хочешь помочь новичку - сделай вместе с ним.
Хочешь помочь мастеру - отойди и не мешай,
а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 5-ый класс)
Отправлен: 14.10.2005, 11:25
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Denis!
Абракадабра какая-то. Вы хоть сами понимаете, что должно быть?
Разберем ближайший кусок, в остальном то-же самое:
"WHERE GOODS_TYPE_CODE :TYPE"
:TYPE - это, я так понял, Ваш вводимый в запрос параметр. А вот что такое GODD_TYPE_CODE не знаем ни я, ни Ваш компилятор. Вы разве не знаете, что после слова WHERE должны стоять ИСКЛЮЧИТЕЛЬНО логические выражения, которые объеденяются с помощью логических операторов либо AND, либо OR?
Как только Вы сделаете то, что необходимо по стандарту языка SQL, уверен, у Вас все заработает. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 14.10.2005, 11:27
Оценка за ответ: 5


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

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

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

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

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


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


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

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное