Парочка дизайнерских извращений

Vadik(R)

Well-Known Member
12.12.2007
469
0
#1
Доброго всем дня! Решил сделать для программы еще парочку дизайнерский извращений.
А именно:
1. Вставить свой курсов в программу (Pointer такой, какой в браузере при наведении на ссылку) и заменить им стандартный crHandPoint.
Просто мне не нравится курсор который там есть. Я хочу чтобы при наведении на ссылку (лабел, синий подчеркнутый текст и событие он клик) делался более красивый курсор, такой как в браузере. Проблема в том, что я не знаю вообще как такое реализовать, а поискав в интернете всегда напираюсь на такой ответ:
{$R CURSORS.RES} const crZoomIn = 1; crZoomOut = 2; Screen.Cursors[crZoomIn] := LoadCursor(hInstance, 'CURSOR_ZOOMIN');Screen.Cursors[crZoomOut] := LoadCursor(hInstance, 'CURSOR_ZOOMOUT');
С вашей программой должен быть слинкован файл ресурсов, содержащий
соответствующие курсоры.
Не подскажете алгоритм, как добавить свой курсор в программу? ;)
И второе. Вот меня приспичило поискать невозможности в Borland'е, и захотел я сделать так, чтобы окно программы могло быть только в двух статусах: либо в wsMinimazed, либо в wsMaximized. А wsNormal - чтобы никогда не было.
Долго эксперементировал с CanResize, onResize, BorderStyle и еще чем-то другим - не получилось.
А хотелось бы чтобы у приложения было BorderStyle либо bsResize, либо bsSingle. Так как в таком случае верхнее меню отображается полностью. Да, не предлагайте таймер чтобы замутить чтото вроде этого: if form1.WindowState=wsNormal than form1.WindowState:=wsMaximized. Просто из принципа не люблю я таймер.
Но в основном из двух "извращений" меня интересует больше решение первого, так как я узнаю как встраивать свои курсоры в программу.
Заранее спасибо за помощь :)
 
E

etc

Гость
#2
А в чем трабла? Сами ж нашли путь, что непонятно? Как ресурсы делать? или что ?
 

Vadik(R)

Well-Known Member
12.12.2007
469
0
#3
Когда писал это сообщение - я еще не умел создавать файл ресурсов. В общем, с курсором проблема почти решена... Но почти - может оказаться далеко не почти :)
Поскольку я захотел сделать курсор такой же как в браузере (ИЕ) при наведении на ссылку, мне теперь нужен сам файл курсора. Стал искать в windows\cursors - там такого нет (там вообще дефалтовских не было), поскольку у меня XP SP3 Extreme Edition. Решил попросить друга поискать в этой же папке - у друга xp нормальный, но этот "палец" он так и не нашел, там только был обычный стандартный палец с синим краем (боже, какой он противный :)).
Далее пошел искать в интернете, но там вообще бесполезно, наоборот находятся более новые курсоры, которые кто-то создавал. В итоге проблема пока осталась - как вытянуть этот курсор из браузера? :)
 
M

Mun2

Гость
#4
делаешь скриншот какой нить прогой(Wisdom-soft ScreenHunter 5 Free), которая курсоры захватывает (тк стандартный printscreen не захватывает курсоры), а потом картинку в редакторе курсоров(ArtCursors) обрабатываешь как хочешь.
 
Z

zubr

Гость
#5
1. Курсоры также можно загружать из файла:
Screen.Cursors[1] := LoadImage(hInstance, 'Путь к файлу\MyCursor.CUR', IMAGE_CURSOR,
0, 0, LR_DEFAULTSIZE + LR_LOADFROMFILE);
Или еще проще:
Screen.Cursors[1] := LoadCursorFromFile(Путь к файлу\MyCursor.CUR');
2. Чтобы запретить wsNormal для формы делаем следующее:
2.1 Свойство WindowState := wsMaximized;
2.2 Делаем обработку сообщения WM_SYSCOMMAND:
Код:
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSyscommand(var msg: TMessage); message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSyscommand(var msg: TMessage);
begin
if msg.WParam = SC_RESTORE then
exit;
inherited;
end;
 

Vadik(R)

Well-Known Member
12.12.2007
469
0
#6
zubr, спасибо Вам!
А на счет курсоров - загружать я уже научился и создавать файл ресурсов, все выходит неплохо.
Осталось теперь взять сам файл курсора в формате cur. Пытался еще RESHACKER'ом лазить по файлам в папке Internet Explorer - бесполезно.
Ну, на крайний случай, если в чистом виде не удасться добыть сам курсор, сделаю так, как посеветовал Mun2.
 
E

etc

Гость
#7
Надо по ресурсам смотреть, гдето в длл он лежит.
 

Vadik(R)

Well-Known Member
12.12.2007
469
0
#8
Все, наконец-то откопал курсор на infr@ CD :blink:
А на счет второго пункта, можно было кое-что дописать:
if (msg.WParam=SC_RESTORE) or (msg.WParam=61730) then exit;
Второе условие - это на случай, если кликнут два раза по шапке формы.
Всем спасибо! :(