Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2010, 19:09   #1
killen
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 17
По умолчанию Корректировка программы и создание изменяющихся кнопок

Всем привет!

В общем нуждаюсь в помощи гуру делфи, т.к. возникли некоторые сложности с программой которая написана на 7 делфи.
В общем проблемы заключаются в следующем:
1) Изменения кнопок после наведения и нажатия. Как сделать в программе меняющиеся кнопки, на данный момент они просто немного вдавливаются, а нужно что бы при наведении была одна картинка, при нажатии другая, и когда не наведено и не нажато - третья.
2) При запуске программы одна из кнопок (настройки) залита серым цветом, а после того как программа запуститься (произойдет соединение с сервером), о картинка становится нормальной. Как это исправить?

Ко всему этому прикладываю исходник программы и вариант который нужно получить (скомпилированный).

Помогите пожалуйста решить эти проблему, буду искренне благодарен.
Вложения
Тип файла: zip client.zip (2.39 Мб, 30 просмотров)
killen вне форума Ответить с цитированием
Старый 21.02.2010, 02:48   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Насчет второго вопроса - уберите с Image1 дублирующую надпись и исправьте:
Код:
procedure GFilesThread.LockFMain;
begin
  Fmain.ImgBtn1.Visible:=False;
  Fmain.ImgBtn2.Visible:=False;
  Fmain.ImgBtn5.Visible:=False;
end;

procedure GFilesThread.UNLockFMain;
begin
  Fmain.ImgBtn1.Visible:=True;
  Fmain.ImgBtn2.Visible:=True;
  Fmain.ImgBtn5.Visible:=True;
end;
Насчет первого вопроса - я уже это рассказывал, правда, найти ссылку не могу - поздно, баиньки пора...
Завтра разберемся.

Последний раз редактировалось mihali4; 21.02.2010 в 02:51.
mihali4 вне форума Ответить с цитированием
Старый 21.02.2010, 11:57   #3
killen
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 17
По умолчанию

Я очень благодарен, что вы решили мне помочь.
Сделал как вы сказали, всё получилось, но заметил что все кнопки, при запуске, залиты серым цветом, сложно это заметить, но всё равно заметно, и немного не красиво, может быть знаете как это исправить?
И ещё, как убрать обводку, ту, что штрихами появляется вокруг кнопок, когда на них нажимаешь.
killen вне форума Ответить с цитированием
Старый 21.02.2010, 12:53   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
как убрать обводку
Простой заменой всех TBitBtn на TSpeedButton...
Теперь подбираемся к смене глифов.
Сначала Enable/Disable. Просто загрузкой соответствующей картинки из файла (потом сами закинете все картинки в ресурсы и будете брать оттуда - это все неоднократно рассматривалось).
На примере ImgBtn1:
Код:
procedure GFilesThread.LockFMain;
begin
  //Fmain.ImgBtn1.Visible:=False;
  //Fmain.ImgBtn2.Visible:=False;
  //Fmain.ImgBtn5.Visible:=False;
  Fmain.ImgBtn1.Glyph.LoadFromFile(extractfilepath(paramstr(0))+'images\SDisabled.bmp');
  UnitMain.lock:=True;
end;

procedure GFilesThread.UNLockFMain;
begin
  //Fmain.ImgBtn1.Visible:=True;
  //Fmain.ImgBtn2.Visible:=True;
  //Fmain.ImgBtn5.Visible:=True;
  Fmain.ImgBtn1.Glyph.LoadFromFile(extractfilepath(paramstr(0))+'images\SEnabled.bmp');
  UnitMain.lock:=False;
end;

procedure TFMain.ImgBtn1Click(Sender: TObject);
begin
if lock then
exit;
  RunApp(USettings[0]+Usettings[7]);
  FMain.Close;
end;
mihali4 вне форума Ответить с цитированием
Старый 21.02.2010, 14:29   #5
killen
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 17
По умолчанию

Цитата:
Простой заменой всех TBitBtn на TSpeedButton..
Заменил, но после этого появилась ошибка:
Цитата:
Error reading ImgBtn1.TabOrder: Property TabOrder does not exist.
Если проигнорировать ошибку, то вроде всё нормально, работает как надо, но хотелось бы узнать насколько опасна ошибка?

Теперь насчет глифов, написал я как Вы и сказали, но когда доходит дело до компиляции появляется ошибка:
Цитата:
[Error] GetFilesThr.pas(108): Undeclared identifier: 'lock'
[Warning] GetFilesThr.pas(262): Combining signed and unsigned types - widened both operands
[Fatal Error] UnitMain.pas(61): Could not compile used unit 'GetFilesThr.pas'
Дело в идентификаторе lock, я не сильно разбираюсь, но может его надо зарегистрировать сразу?

mihali4, огромное Вам челоческое спасибо, я очень благодарен что Вы помогаете мне.
killen вне форума Ответить с цитированием
Старый 21.02.2010, 15:00   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да это просто флажок:
Код:
var
  FMain: TFMain;
  USettings : TStrings;
  lock: boolean;
А где возникает ошибка Error reading ImgBtn1.TabOrder ?
Я поменял ImgBtn1 на TSpeedButton и никакой ошибки не вижу...

Последний раз редактировалось mihali4; 21.02.2010 в 15:04.
mihali4 вне форума Ответить с цитированием
Старый 21.02.2010, 15:22   #7
killen
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 17
По умолчанию

Блин, всё у меня криво, как не у человека, добавил то, что Вы сказали, появилась другая ошибка:
Код:
function GFilesThread.HTTPGetFile(const fileURL, FileName: string; sh_progress: boolean): boolean;
Цитата:
[Error] GetFilesThr.pas(112): Statement expected but 'FUNCTION' found
Вот как менял ImgBtn на TSpeedButton:
В файле UnitMain.dfm
Цитата:
object ImgBtn1: TSpeedButton
В файле UnitMain.pas
Цитата:
ImgBtn1: TSpeedButton;
killen вне форума Ответить с цитированием
Старый 21.02.2010, 15:47   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не-е-е-т, так не пойдет...
Кидаем на форму SpeedButton1, удаляем ImgBtn1, переименовываем
SpeedButton1 в ImgBtn1 и пробиваем ему нужные события (они уже есть, их нужно просто переназначить).
Так... Вот ваша главная юнита со всеми корректировками на примере только ImgBtn1:
mainunit.rar

Дальше.
Вас не смущает вес файла формы ? У вас UnitMain.dfm весит больше трех мегабайт !
Обязательно переделывайте все BMP на JPG.

Загрузка изображений из ресурсов будет примерно такой:
Код:
ImgBtn1.Canvas.Draw(0, 0, LoadJpegRes('SONMOUSE'));
вместо
ImgBtn1.Glyph.LoadFromFile(extractfilepath(paramstr(0))+'images\SOnMouse.bmp');
mihali4 вне форума Ответить с цитированием
Старый 21.02.2010, 18:08   #9
killen
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 17
По умолчанию

Эврика, у меня получилось, mihali4, огромное вам спасибо, вы меня очень выручили.
Осталось последняя вещь, как сделать что бы после нажатия на кнопку она не вдавливалась?

Насчет размера, в принципе это не так важно, но я попробовал сделать как вы написали, но появилась ошибка:

Код:
[Error] UnitMain.pas(329): Undeclared identifier: 'Canvas'
[Error] UnitMain.pas(329): Undeclared identifier: 'LoadJpegRes'
Ещё раз большое спасибо, я Вам очень благодарен.
killen вне форума Ответить с цитированием
Старый 21.02.2010, 18:43   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В uses добавьте jpeg. Тогда жипеги будут адекватно восприниматься.
Вот это не понял:
Цитата:
как сделать что бы после нажатия на кнопку она не вдавливалась
То есть, вы не хотите, чтобы кнопка (как ей и полагается) сдвигалась на пару пикселей вверх и вправо ?
Тогда вообще не используйте кнопки...
Вместо них - простые TImage.
Я рассказывал в
http://www.programmersforum.ru/showthread.php?t=17054
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание кнопок Alenkakiss Помощь студентам 4 07.06.2009 18:20
Создание кнопок 3D Active Button Magic aiswork Софт 1 28.05.2009 00:53
По нажатию обеих кнопок мыши выход из программы Slash3 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 05.04.2009 00:47
создание кнопок на сайте plaksa HTML и CSS 2 17.12.2008 15:42
Создание кнопок на лету gabin Компоненты Delphi 2 11.05.2008 15:30