|
Вопрос # 2 419/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Есть исходники разработанные с компонентом CoolTrayIcon на дельфи7, по некоторым причинам не могу использовать эту версию и работаю на 2009.
Есть ли какая возможность установки новой версии CoolTrayIcon (и есть ли она вообще) для дельфи 2009? Может альтернатива какая имеется?
Ибо на 2009 не компилируется.
Сам я начинающий программист (буквально неделя изучения).(
Разрабатываем программу с другом, с моей стороны теперь не получается никакой работы... Помогите пожалуйста.
 |
Вопрос задал: Northwind (статус: Посетитель)
Вопрос отправлен: 15 февраля 2009, 01:31
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: Виталий
Здравствуйте, Белояр!
Как я понял, Delphi 7 вы не используйте из-за ошибки, возникающей при запуске в висте.
Для Delphi 2009 часто приходиться переделывать исходники, хедеры библиотек. Это происходит из-за юникода, встроенного в Delphi 2009. Теперь pchar - это юникодная строка, так что чтобы исправить исходники нужно char заменить на ansichar.
Если не поможет, то пишите код ошибки.
А вообще, из-за этих проблем, я перешл обратно в Delphi 7 и не парился, на ошибку пофиг.
 |
Ответ отправил: Виталий (статус: 2-ой класс)
Время отправки: 15 февраля 2009, 14:16
|
Ответ #2. Отвечает эксперт: Вадим К
Здравствуйте, Белояр!
Посидел, пофантазировал и собрал версию для 2009 делфи. внутри архива есть dpk файл для неё (искать по 2009). Код компилируется без единой ошибки и вроде даже работает, но оставляю это на Вас. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 февраля 2009, 20:37
Оценка за ответ: 5
Комментарий к оценке: Спасибо огромное, будем пробовать.
|
Ответ #3. Отвечает эксперт: Ученый
Здравствуйте, Белояр! Как и обещал пример работы со стандартным TrayIcon.
Кидаем на форму следующие компоненты: TrayIcon1 (вкладка additional), ApplicationEvents1 (таже вкладка), PopupMenu1(вкладка Standard) и ImageList1 (вкладка win32).
Теперь в свойствах TrayIcon1 выставляем:
Animate-True;
icons-ImageList1;
PopupMenu-PopupMenu1;
Hint-{подсказка, которая отображается при наведении курсора на иконку в трее};
Visible-true;
В ImageList1 загружаем все иконки, которые вам понадобятся.
В PopupMenu1 Прописываем все пункты меню, которые будут отбражаться при клике правой кнопки на значке в трее.
Теперь прописываем следующий код:
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
form1.Hide;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Application.Restore();
end;
procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
form1.Show;
end;
Теперь поясню, откуда взяли ApplicationEvents1Minimize. Это событие OnMinimize у компонента ApplicationEvents1.
Вроде и все. Хотя в CoolTrayIcon может есть еще что-то, но не припомню, потому что очень редко его использую....Так что используйте стандартный TrayIcon и не каких проблем не будет :)
Прикрепляю исходник с примером на делфи 2009...
З.Ы. Удачи:)) К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 16 февраля 2009, 17:43
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 53; последнее сообщение — 18 февраля 2009, 20:17; участников в обсуждении: 5.
Страницы: [« Предыдущая] [1] [2] [3]
|
Вадим К (статус: Академик), 18 февраля 2009, 16:31 [#41]:
вторая ошибка - это забытая точка с запятой. Слишком честно сделали копипаст...
а PChar ... странно
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 16:47 [#42]:
поставил после MessageBox(0, 'Завершить текущий сеанс?', PСhar('Подтверждение'), mb_OkCancel+mb_iconQuestion);
точку с запятой, ошибок стало меньше:
[DCC Error] Unit1.pas(149): E2003 Undeclared identifier: 'PСhar'
[DCC Fatal Error] Project1.dpr(6): F2063 Could not compile used unit 'Unit1.pas'
может для PChar нужно что-то куда-то добавить? например что-то в uses, type и т.п.?
вот часть этого кода:
procedure TForm1.N2Click(Sender: TObject);
var
buttonSelected : Integer;
begin
// Отображение диалога с подтверждением
MessageBeep(MB_ICONQUESTION);
MessageBox(0, 'Завершить текущий сеанс?', PСhar('Подтверждение'), mb_OkCancel+mb_iconQuestion);
// Показ типа выбранной кнопки
if buttonSelected = mrOK then
Application.terminate
else
end;
|
|
Ученый (статус: 8-ой класс), 18 февраля 2009, 16:55 [#43]:
Белояр, что вы постите на одном мине форуме то, задайте новый вопрос, и вам дадут нормальный ответ
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 16:59 [#44]:
да я тут пока не особо ориентируюсь, ну и чтобы не захломлять портал))
да и вопросы по одной теме.
|
|
Вадим К (статус: Академик), 18 февраля 2009, 17:42 [#45]:
попробуйте написать эту строку так
MessageBox(0, 'Завершить текущий сеанс?', 'Подтверждение', mb_OkCancel+mb_iconQuestion);
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 17:55 [#46]:
ага получилось, но теперь он не закрывает программу
|
|
Ерёмин А.А. (статус: *Администратор), 18 февраля 2009, 17:58 [#47]:
Как у вас тут всё сложно... Не удержался написать...
if MessageDlg('Выйти?',mtConfirmation,[mbYes,mbNo],0) = mrYes then Close;
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 18:09 [#48]:
гм, теперь я совсем запутался.
это куда подставить? просто окно то вылезет, но оно не закрывает приложение и все равно отображает "Confirm".
тут видимо нужен уже другой код.
MessageBox(0, 'Завершить текущий сеанс?', 'Подтверждение', mb_OkCancel+mb_iconQuestion); - а вот это делает title таким как нужно, но не закрывает программу при нажатии "ок". значит сюда надо что-то добавить\заменить. только вот что?
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 18:14 [#49]:
procedure TForm1.N2Click(Sender: TObject);
var
buttonSelected : Integer;
begin
// Отображение диалога с подтверждением
MessageBeep(MB_ICONQUESTION);
MessageBox(0, 'Завершить текущий сеанс?', ('Подтверждение'), mb_OkCancel+mb_iconQuestion);
// Показ типа выбранной кнопки
if buttonSelected = mrOK then
Application.terminate
else
end;
это кусок кода в нынешнем виде, но он не закрывает окно и при компиляции такое сообщение:
[DCC Warning] Unit1.pas(151): W1036 Variable 'buttonSelected' might not have been initialized
чего так надо поменять, чтобы все заработало?
|
|
Ерёмин А.А. (статус: *Администратор), 18 февраля 2009, 20:01 [#50]:
buttonSelected завели, а значение в ней откуда возьмётся? Не кажется странным?
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 20:03 [#51]:
ну я новичок, потому не знаю что и как делать дальше. мне бы узнать что делать дальше?
|
|
Ученый (статус: 8-ой класс), 18 февраля 2009, 20:07 [#52]:
Белояр, если хотите, чтобы вам полнустью объяснили, что сделать в данном случае, привели код, исходник- не пропускайте мимо ушей мои советы, и задавайте новый вопрос.....надеюсь уж как задать вопрос знаете?
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 20:17 [#53]:
хорошо, спасибо всем вам за помощь. )
я тут поудалял то, что вызывало ошибки, вроде пока работают все функции, компилятор тоже молчит. уже хорошо
|
31 января 2011, 20:03: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Страницы: [« Предыдущая] [1] [2] [3]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|