|
Вопрос # 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] [Следующая »]
|
Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 13:02 [#21]:
Попробуй убрать в этих процедурах только текст между begin и end, скомпилируй (эти процедуры должны исчезнуть), а потом пересоздай их заново.
И напиши какие ошибки появились теперь.
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 13:16 [#22]:
может ошибка что не в то место размещаю код?
может так определенно куда нужно?
|
|
Вадим К (статус: Академик), 17 февраля 2009, 13:26 [#23]:
А "эти процедуры" просто ручками вписываете?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 13:29 [#24]:
да, накидал на форму компоненты и в конце unit1 разместил код, все как описано в сообщении ув. Ученого.
|
|
Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 13:35 [#25]:
А какие теперь ошибки?
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 13:42 [#26]:
я тут покопал немного, сделал заново, все как вы писали.
теперь показывает иконку в трее, но также и на панели задач.
т.е. при скрытии не переносится полностью в трей.
ошибки:
[DCC Warning] Unit1.pas(55): W1002 Symbol 'FindData' is specific to a platform
[DCC Warning] Unit1.pas(55): W1002 Symbol 'FindData' is specific to a platform
[DCC Warning] Unit1.pas(132): W1011 Text after final 'END.' - ignored by compiler
|
|
Вадим К (статус: Академик), 17 февраля 2009, 13:52 [#27]:
аааа!!!!!
нельзя так. нельзя. Не все процедуры можно просто скопировать и вставить.
в данном случае так надо
для FormShow
нажать на форму, потом F11 (для инспектора объектов). Там перейти на вкладку Events. Найти там OnShow и кликнуть дважды в этой строке. Делфи сделает заготовку. Для Minimaze аналогично.
Для TrayIcon1Click - просто дважды кликнуть по компоненту TrayIcon1
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 14:01 [#28]:
Ну вот! Это уже не ошибки, а предупреждения. В принципе ничего страшного не вижу. А вот по поводу показа на панели задач попробу добавить в процедуру
procedure TForm1.ApplicationMinimize(Sender : TObject);
строку:
ShowWindow(Application.Handle,SW_HIDE);
А в
procedure TForm1.TrayIcon1Click(Sender: TObject);
добавь строку:
SetForeGroundWindow(Application.MainForm.Handle);
Также в эту процедуру можно переместить Application.Restore;
из процедуры TForm1.FormShow... и разместить ее над SetForeGroundWindow(Application.MainForm.Handle);
Т.е. должно примерно быть так:
procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
Application.Restore;
SetForeGroundWindow(Application.MainForm.Handle);
TrayIcon1.Hide;
end;
Должно помочь.
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 14:07 [#29]:
о, получилось))
спасибо огромное всем, надеюсь не сильно достал вопросами. 
буду обязательно консультироваться на вашем сайте, ибо здесь прекрасные люди и специалисты помогающие новичкам.
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 14:13 [#30]:
буду теперь пробовать добавлять кнопку скрытия в меню "файл".
|
|
Ученый (статус: 8-ой класс), 17 февраля 2009, 20:36 [#31]:
Интересно, а для кого исходник примера
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 21:51 [#32]:
эмм, тут опять вопросик есть)
как убрать пунктирную рамку вокруг кнопок?
|
|
Вадим К (статус: Академик), 17 февраля 2009, 22:48 [#33]:
А зачем? это фокус ввода. Некоторые люди за её отсутсвие могут программу и выбросить. Можно конечно убрать фокус с кнопки, но когда её будете нажимать, он там будет.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Northwind (статус: Посетитель), 17 февраля 2009, 23:13 [#34]:
да просто картинку портит, некрасиво. ну да ладно с ним.
а как можно переименовать слово Confirm в окне предупреждения о выходе из программы?
|
|
Вадим К (статус: Академик), 18 февраля 2009, 00:11 [#35]:
подтвердить?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Тов. Женька (статус: 3-ий класс), 18 февраля 2009, 08:25 [#36]:
Попробуй вместо MessageDlg использовать MessageBox, вот так:
MessageBox(0, 'Сохранить изменения?', PСhar(Application.Title), mb_YesNoCancel+mb_iconWarning)
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 15:31 [#37]:
не, там уже есть // Отображение диалога с подтверждением
MessageBeep(MB_ICONQUESTION);
buttonSelected := MessageDlg('Завершить текущий сеанс?',mtConfirmation,
mbOKCancel, 0);
мне нужно переименовать именно title этого окна...
|
|
Тов. Женька (статус: 3-ий класс), 18 февраля 2009, 16:04 [#38]:
Ну так и подставь вместо
MessageDlg('Завершить текущий сеанс?',mtConfirmation, mbOKCancel, 0);
вот это:
MessageBox(0, 'Завершить текущий сеанс?', PСhar('пиши сюда все, что хочешь!'), mb_OkCancel+mb_iconQuestion)
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 16:17 [#39]:
[DCC Error] Unit1.pas(150): E2034 Too many actual parameters
[DCC Error] Unit1.pas(150): E2010 Incompatible types: 'procedure, untyped pointer or untyped parameter' and 'PWideChar'
[DCC Error] Unit1.pas(42): E2065 Unsatisfied forward or external declaration: 'TForm1.PСhar'
[DCC Fatal Error] Project1.dpr(6): F2063 Could not compile used unit 'Unit1.pas'
ошибки выдает
|
|
Northwind (статус: Посетитель), 18 февраля 2009, 16:25 [#40]:
подставил вместо того, что было:
[DCC Error] Unit1.pas(149): E2003 Undeclared identifier: 'PСhar'
[DCC Error] Unit1.pas(151): E2066 Missing operator or semicolon
[DCC Fatal Error] Project1.dpr(6): F2063 Could not compile used unit 'Unit1.pas'
|
Страницы: [« Предыдущая] [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|