| 
| 
 | Вопрос # 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] [Следующая »]  
|   | Вадим К (статус: Академик), 15 февраля 2009, 04:24 [#1]:Если немножко постараться, то всё компилируется. Более того, здесь уже в вопросах было о данном компоненте и человеку удалось скомпилировать. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Northwind (статус: Посетитель), 15 февраля 2009, 11:17 [#2]:а можно ссылочку на этот вопрос? я тут просто пока слабо ориентируюсь.
 |  
|   | Вадим К (статус: Академик), 15 февраля 2009, 20:40 [#3]:to Виталий 7 делфи отлично запускается под вистой. Сам запускал.
 И вообще, формат Вашего ответа какой то жесткий.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Ученый (статус: 8-ой класс), 15 февраля 2009, 21:26 [#4]:to Белояр. Ачем вам не нравится стандартный TrayIcon. Лично я с его помощью добивался тех же эфектов, что и с CoolTrayIcon. TrayIcon есть в делфи 2009 и компилиться будет нормально без ошибок... Согласен, что покопаться придется, исходники немного поменять... |  
|   | Northwind (статус: Посетитель), 16 февраля 2009, 01:08 [#5]:Ув. Ученый, а можно готовый код для стандартного TrayIcon? Просто так как я совсем уж начинающий, очень интересно было бы поглядеть реализацию. В жизни пригодится.
 |  
|   | Northwind (статус: Посетитель), 16 февраля 2009, 01:13 [#6]:немного не сюда, но чтоб не создавать новой темы, хотел спросить. 
 компилятор выдает сообщение:
 [DCC Warning] Unit1.pas(53): W1002 Symbol 'FindData' is specific to a platform
 
 сама строка 53:
 result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
 
 как это можно починить? или не стоит обращать внимание?
 |  
|   | Вадим К (статус: Академик), 16 февраля 2009, 03:15 [#7]:Компилятор предупредил, что данная структура "специфична для платформы". Ну к примеру он может ругаться, если использовать функцию, которая добавляет слеш в конец строки, что она платфоменно независимая... Но даже включая Севен, она будет работать  правильно, потому что в винде все всегда пока что был разделитель для папок "\". А вот под Линуксом он наоборот. Но в дань Киликсу, делфи ругается. То есть, эту можно игнорировать либо поискать структуру более подходящую...
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Тов. Женька (статус: 3-ий класс), 16 февраля 2009, 10:28 [#8]:Если не ошибаюсь, компонент Tray Icon (как уже встроенный) имеется в Delphi с версии 2006, (по крайней мере в Turbo Delphi я его видел). Может имеет смысл воспользоваться им? |  
|   | Вадим К (статус: Академик), 16 февраля 2009, 11:31 [#9]:Встренные компоненты хороши тем, что у других людей будет тоже "компилироваться". Не все ведь любят доустанавливать компоненты. Некоторым религия не позволяет,  у некоторых могут быть конфликты с уже установленными. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Ученый (статус: 8-ой класс), 16 февраля 2009, 11:37 [#10]:to Белояр. Можно и код, но только позже....приду с занятий напишу...если конечно вопрос еще буде актуальным |  
|   | Northwind (статус: Посетитель), 16 февраля 2009, 20:26 [#11]:Ага, спасибо. |  
|   | Northwind (статус: Посетитель), 16 февраля 2009, 21:46 [#12]:гм, я вот не понял как поставить в ImageList1 хоть одну иконку, не говоря о нескольких... подскажите, как?
 
 p.s. может кто знает, где скачать книгу по дельфи 2009 для новичков?
 |  
|   | Northwind (статус: Посетитель), 16 февраля 2009, 22:08 [#13]:почему то еще выдает ошибку в этой строке: 
 procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
 |  
|   | Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 08:31 [#14]:1. Как добавить иконки в ImageList. В ImageList используются изображения размером, как правило, 16x16 точек. Цвет, которым окрашена левая нижняя ячейка, будет автоматом вырезан из всех иконок. Единственное, изображения, по-моему, не должны иметь более 24 бит, в этом случае с вырезанием фона проблем не будет.
 Собственно добавление. Нажимаем правой кнопкой мышки на компоненте ImageList1 (можно и двойным кликом открыть). В контекстном меню видим "Edit ImageList...", там же видим "16 х 16 Images"  и "32 х 32 Images". Тут, думаю, объяснять не надо. Не советовал бы выставлять "32х32...", хотя... посмотрите сами!
 В открывшемся диалоговом окне нажимаем кнопку "Add..." и далее выбираем нужное изображение.
 Еще одно важное замечание. Можно заранее создать изображение с несколькими иконками. Следите только чтобы его размеры были кратны 16 или 32.
 
 2. Какую именно ошибку выдает?
 |  
|   | Northwind (статус: Посетитель), 17 февраля 2009, 10:27 [#15]:[DCC Error] Unit1.pas(105): E2070 Unknown directive: 'TForm1' [DCC Error] Unit1.pas(110): E2070 Unknown directive: 'TForm1'
 [DCC Error] Unit1.pas(115): E2070 Unknown directive: 'TForm1'
 [DCC Error] Unit1.pas(151): E2029 ';' expected but end of file found
 [DCC Error] Unit1.pas(151): E2029 ';' expected but end of file found
 [DCC Error] Unit1.pas(36): E2065 Unsatisfied forward or external declaration: 'TForm1.N4Click'
 [DCC Fatal Error] Project1.dpr(6): F2063 Could not compile used unit 'Unit1.pas'
 |  
|   | Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 11:38 [#16]:Возможно, где-то end не поставлен или наоборот - лишний, теряюсь в догадках. Желательно полный текст юнита поглядеть, для общей картины.
 |  
|   | Northwind (статус: Посетитель), 17 февраля 2009, 12:04 [#17]:unit Unit1; 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ShellAPI, Buttons, Menus, ImgList, ExtCtrls, AppEvnts;
 
 
 type
 TForm1 = class(TForm)
 BitBtn1: TBitBtn;
 BitBtn2: TBitBtn;
 BitBtn3: TBitBtn;
 MainMenu1: TMainMenu;
 WSNCP1: TMenuItem;
 N2: TMenuItem;
 Help1: TMenuItem;
 FAQWSN1: TMenuItem;
 WSNCP2: TMenuItem;
 Label1: TLabel;
 Image1: TImage;
 PopupMenu1: TPopupMenu;
 ImageList1: TImageList;
 ApplicationEvents1: TApplicationEvents;
 TrayIcon1: TTrayIcon;
 procedure BitBtn1Click(Sender: TObject);
 procedure BitBtn2Click(Sender: TObject);
 procedure BitBtn3Click(Sender: TObject);
 procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;
 procedure SpeedButton1Click(Sender: TObject);
 procedure FormClose(Sender: TObject; var Action: TCloseAction);
 procedure N2Click(Sender: TObject);
 procedure FAQWSN1Click(Sender: TObject);
 procedure WSNCP2Click(Sender: TObject);
 procedure N4Click(Sender: TObject);
 procedure ApplicationEvents1Minimize(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 uses Unit4;
 
 {$R *.dfm}
 function FileSize(fileName : wideString) : Int64;
 var
 sr : TSearchRec;
 begin
 if FindFirst(fileName, faAnyFile, sr ) = 0 then
 result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
 else
 result := -1;
 
 FindClose(sr) ;
 end;
 
 procedure TForm1.WMMoving(var Msg: TWMMoving);
 var
 workArea: TRect;
 begin
 workArea := Screen.WorkareaRect;
 with Msg.DragRect^ do
 begin
 if Left < workArea.Left then
 OffsetRect(Msg.DragRect^, workArea.Left - Left, 0) ;
 if Top < workArea.Top then
 OffsetRect(Msg.DragRect^, 0, workArea.Top - Top) ;
 if Right > workArea.Right then
 OffsetRect(Msg.DragRect^, workArea.Right - Right, 0) ;
 if Bottom > workArea.Bottom then
 OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom) ;
 end;
 inherited;
 end;
 procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
 begin
 
 end;
 
 procedure TForm1.BitBtn1Click(Sender: TObject);
 begin
 ShellExecute(Handle,'open','Start server.cmd',nil,nil,0);
 end;
 
 procedure TForm1.BitBtn2Click(Sender: TObject);
 begin
 ShellExecute(Handle,'open','Stop server.cmd',nil,nil,0);
 end;
 
 procedure TForm1.BitBtn3Click(Sender: TObject);
 begin
 ShellExecute(Handle,'open','Stop server.cmd',nil,nil,0);
 ShellExecute(Handle,'open','Start server.cmd',nil,nil,0);
 end;
 
 procedure TForm1.SpeedButton1Click(Sender: TObject);
 begin
 application.Terminate;
 end;
 
 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
 begin;
 end;
 
 procedure TForm1.N2Click(Sender: TObject);
 var
 buttonSelected : Integer;
 begin
 // Отображение диалога с подтверждением
 MessageBeep(MB_ICONQUESTION);
 buttonSelected := MessageDlg('Завершить текущий сеанс?',mtConfirmation,
 mbOKCancel, 0);
 // Показ типа выбранной кнопки
 if buttonSelected = mrOK     then
 Application.terminate
 else
 
 end;
 
 procedure TForm1.FAQWSN1Click(Sender: TObject);
 begin
 ShellExecute(Handle, nil, 'http://northwind/smf/index.php/board,43.0.html', nil, nil, SW_RESTORE)
 end;
 
 procedure TForm1.WSNCP2Click(Sender: TObject);
 begin
 form_about.show;
 end;
 
 procedure T
 
 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;
 |  
|   | Тов. Женька (статус: 3-ий класс), 17 февраля 2009, 12:20 [#18]:1.Вижу над третьей процедурой снизу "procedure T". Так в коде и есть? 2. Дважды встречается процедура
 "procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
 begin
 
 end;"
 Уберите лишнюю.
 3. Пропущен самый последний end, после него должна стоять точка.
 4. Теперь по ошибке "[DCC Error] Unit1.pas(36): E2065 Unsatisfied forward or external declaration: 'TForm1.N4Click'"
 У вас в секции type имеется объявление процедуры 'TForm1.N4Click', а сама процедура нигде не расписана. Так что удаляйте эту процедуру из type, и, если надо, пересоздавайте заново.
 |  
|   | Northwind (статус: Посетитель), 17 февраля 2009, 12:36 [#19]:ага, так и было. сейчас попробуем убрать.
 |  
|   | Northwind (статус: Посетитель), 17 февраля 2009, 12:49 [#20]:не получается, тыкаюсь по коду без толку.  практически ничего не понятно...
 
 убрал пока:
 
 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;
 
 без этого все компилируется.
 procedure T тоже удалил, поставил в конце end.
 эх...
 |  Страницы: [1] [2] [3] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |