Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.26;
Скачать: CL | DM;

Вниз

tray & screen.cursor   Найти похожие ветки 

 
dvndvn ©   (2011-03-16 18:04) [0]

Здравствуйте. Подскажите в чем может быть причина? В программе создается иконка в tray. При выполнении определенной процедуры меняется screen.cursor:=crSQLWait и иконка в tray (deleteicon+createicon). При выходе курсора в taskbar курсор меняется на crDefault. При возвращении на главную форму он
естественно востанавливатся. Но если вызывается хинт иконки програмы, то при возвращении курсора на главную форму, он остается crDefault.


 
Conflict ©   (2011-03-16 18:06) [1]

Надо код смотреть кто как меняет иконку и курсор


 
dvndvn ©   (2011-03-16 18:14) [2]

процедура меняющая курсор
procedure TFormMain.ChangeCursor(cursor:Tcursor);
begin
Screen.Cursor:=cursor;
case cursor of
  crSQLWait  : begin
                DeleteTrayIcon;
                CreateTrayIcon(2);
               end;
  crDefault : begin
                DeleteTrayIcon;
                CreateTrayIcon(1);
               end;
  crHourGlass: begin
                DeleteTrayIcon;
                CreateTrayIcon(3);
               end;
end;
создаем иконку
procedure TFormMain.CreateTrayIcon(n:Integer);
var nidata  : TNotifyIconData;
   dopinfo2,dopinfo3 : string;
begin
dopinfo2:=": идет запись в БД. Пожалуйста подождите";
dopinfo3:=": идет чтение страницы. Пожалуйста подождите";
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle;
  uID := 1;
  uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  uCallBackMessage := WM_MYICONNOTIFY;
  case n of
   1 : begin
        ImageList.GetIcon(0, Application.Icon);
        hIcon := Application.Icon.Handle;
        StrPCopy(szTip,Application.Title);
       end;
   2 : begin
        ImageList.GetIcon(13, Application.Icon);
        hIcon := Application.Icon.Handle;
        StrPCopy(szTip,Application.Title+dopinfo2);
       end;
   3 : begin
        ImageList.GetIcon(12, Application.Icon);
        hIcon := Application.Icon.Handle;
        StrPCopy(szTip,Application.Title+dopinfo3);
       end;
  end;
 end;
 Shell_NotifyIcon(NIM_ADD, @nidata);
end;

Удаляем иконку
procedure TFormMain.DeleteTrayIcon;
var nidata : TNotifyIconData;
begin
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle;
  uID := 1;
 end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

примечание: загрузка процессора достигает 100%


 
Conflict ©   (2011-03-16 18:21) [3]


> Но если вызывается хинт иконки програмы, то при возвращении
> курсора на главную форму, он остается crDefault.

Откуда такое утверждение?
В приведенном куске кода нет вызова процедуры ChangeCursor и установки хинта иконки.


 
dvndvn ©   (2011-03-16 18:31) [4]

установка хинта курсора:
StrPCopy(szTip,Application.Title);
или StrPCopy(szTip,Application.Title+dopinfo2);
то есть заполнение поля szTip обекта nidata  : TNotifyIconData;

пример вызова процедуры ChangeCursor
procedure GetCellsValue;
var
 i,j,k   : integer;
 FlagLS  : Boolean;
begin
 FormMain.ChangeCursor(crSQLWait);


 
Conflict ©   (2011-03-17 11:12) [5]

Откуда информация, что курсор зависит от хинта иконки?
Т.е. если задизеблить StrPCopy в процедуре CreateTrayIcon, то процедура изменения курсора ведет себя нормально?


 
dvndvn ©   (2011-03-17 18:45) [6]

Когда я писал "При выходе курсора в taskbar курсор меняется на crDefault." то имелось ввиду, что курсор меняет Windows, в программе в это время курсор не изменяется. Если не наезжать на свою иконку, то Windows востанавливает текущее значение курсора, а после наезда, при возвращении курсора на главную форму программы, на свою иконку на экране остаётся crDefault, хотя в програме вэто время значение курсора crSQLWait


 
Conflict ©   (2011-03-18 10:03) [7]

Так может проще отлавливать положение курсора на форме и в это время назначать его свойство в какое нужно значение?


 
Conflict ©   (2011-03-18 10:05) [8]

Для размышления: http://www.cyberguru.ru/delphi-sources/ui-windows/kak-uznat-tchto-kursor-myshi-nad-moej-formoj.html


 
dvndvn ©   (2011-03-18 12:19) [9]

Спасибо за помощь и за ссылку. Просто  в это время FireBird забирает 100% процессора, а при срабатывании Application.OnHint проводник похоже глючит.



Страницы: 1 вся ветка

Текущий архив: 2011.06.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
15-1299856019
anton773
2011-03-11 18:06
2011.06.26
как сравнить время


15-1299929099
Jumbo
2011-03-12 14:24
2011.06.26
Серийный номер CD-диска


15-1299172170
И. Павел
2011-03-03 20:09
2011.06.26
QReport vs Rave


15-1297596752
KilkennyCat
2011-02-13 14:32
2011.06.26
Любителям собирать компьютеры


2-1300902450
Учусь
2011-03-23 20:47
2011.06.26
TWebBrowser и браузер по умолчанию