Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 419

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Есть исходники разработанные с компонентом CoolTrayIcon на дельфи7, по некоторым причинам не могу использовать эту версию и работаю на 2009.
Есть ли какая возможность установки новой версии CoolTrayIcon (и есть ли она вообще) для дельфи 2009? Может альтернатива какая имеется?
Ибо на 2009 не компилируется.
Сам я начинающий программист (буквально неделя изучения).(

Разрабатываем программу с другом, с моей стороны теперь не получается никакой работы... Помогите пожалуйста.

Приложение:
  1. Delphi 2009, Windows Vista SP1 x86.


Northwind Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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

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

Northwind (статус: Посетитель), 18 февраля 2009, 16:59 [#44]:

да я тут пока не особо ориентируюсь, ну и чтобы не захломлять портал))
да и вопросы по одной теме.
Вадим К

Вадим К (статус: Академик), 18 февраля 2009, 17:42 [#45]:

попробуйте написать эту строку так
MessageBox(0, 'Завершить текущий сеанс?', 'Подтверждение', mb_OkCancel+mb_iconQuestion);
Галочка "подтверждения прочтения" - вселенское зло.
Northwind

Northwind (статус: Посетитель), 18 февраля 2009, 17:55 [#46]:

ага получилось, но теперь он не закрывает программу :)
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 18 февраля 2009, 17:58 [#47]:

Как у вас тут всё сложно... Не удержался написать...
if MessageDlg('Выйти?',mtConfirmation,[mbYes,mbNo],0) = mrYes then Close;
Northwind

Northwind (статус: Посетитель), 18 февраля 2009, 18:09 [#48]:

гм, теперь я совсем запутался.
это куда подставить? просто окно то вылезет, но оно не закрывает приложение и все равно отображает "Confirm".
тут видимо нужен уже другой код.

MessageBox(0, 'Завершить текущий сеанс?', 'Подтверждение', mb_OkCancel+mb_iconQuestion); - а вот это делает title таким как нужно, но не закрывает программу при нажатии "ок". значит сюда надо что-то добавить\заменить. только вот что?
Northwind

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

Northwind (статус: Посетитель), 18 февраля 2009, 20:03 [#51]:

ну я новичок, потому не знаю что и как делать дальше. мне бы узнать что делать дальше?
Ученый

Ученый (статус: 8-ой класс), 18 февраля 2009, 20:07 [#52]:

Белояр, если хотите, чтобы вам полнустью объяснили, что сделать в данном случае, привели код, исходник- не пропускайте мимо ушей мои советы, и задавайте новый вопрос.....надеюсь уж как задать вопрос знаете?
Northwind

Northwind (статус: Посетитель), 18 февраля 2009, 20:17 [#53]:

хорошо, спасибо всем вам за помощь. )

я тут поудалял то, что вызывало ошибки, вроде пока работают все функции, компилятор тоже молчит. уже хорошо :)

31 января 2011, 20:03: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Страницы: [« Предыдущая] [1] [2] [3]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 23:16
Выполнено за 0.03 сек.