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

Тема в разделе "Delphi - FAQ", создана пользователем Vadik(R), 19 авг 2009.

  1. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Доброго всем дня! Решил сделать для программы еще парочку дизайнерский извращений.
    А именно:
    1. Вставить свой курсов в программу (Pointer такой, какой в браузере при наведении на ссылку) и заменить им стандартный crHandPoint.
    Просто мне не нравится курсор который там есть. Я хочу чтобы при наведении на ссылку (лабел, синий подчеркнутый текст и событие он клик) делался более красивый курсор, такой как в браузере. Проблема в том, что я не знаю вообще как такое реализовать, а поискав в интернете всегда напираюсь на такой ответ:
    Не подскажете алгоритм, как добавить свой курсор в программу? ;)
    И второе. Вот меня приспичило поискать невозможности в Borland'е, и захотел я сделать так, чтобы окно программы могло быть только в двух статусах: либо в wsMinimazed, либо в wsMaximized. А wsNormal - чтобы никогда не было.
    Долго эксперементировал с CanResize, onResize, BorderStyle и еще чем-то другим - не получилось.
    А хотелось бы чтобы у приложения было BorderStyle либо bsResize, либо bsSingle. Так как в таком случае верхнее меню отображается полностью. Да, не предлагайте таймер чтобы замутить чтото вроде этого: if form1.WindowState=wsNormal than form1.WindowState:=wsMaximized. Просто из принципа не люблю я таймер.
    Но в основном из двух "извращений" меня интересует больше решение первого, так как я узнаю как встраивать свои курсоры в программу.
    Заранее спасибо за помощь :)
     
  2. etc

    etc Гость

    А в чем трабла? Сами ж нашли путь, что непонятно? Как ресурсы делать? или что ?
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

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

    Mun2 Гость

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

    zubr Гость

    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:
    Код (Text):
    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;
     
  6. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    zubr, спасибо Вам!
    А на счет курсоров - загружать я уже научился и создавать файл ресурсов, все выходит неплохо.
    Осталось теперь взять сам файл курсора в формате cur. Пытался еще RESHACKER'ом лазить по файлам в папке Internet Explorer - бесполезно.
    Ну, на крайний случай, если в чистом виде не удасться добыть сам курсор, сделаю так, как посеветовал Mun2.
     
  7. etc

    etc Гость

    Надо по ресурсам смотреть, гдето в длл он лежит.
     
  8. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Все, наконец-то откопал курсор на infr@ CD :blink:
    А на счет второго пункта, можно было кое-что дописать:
    if (msg.WParam=SC_RESTORE) or (msg.WParam=61730) then exit;
    Второе условие - это на случай, если кликнут два раза по шапке формы.
    Всем спасибо! :(
     

Поделиться этой страницей