Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / speedbutton glyph картинка появляется не сразу / 17 сообщений из 17, страница 1 из 1
12.03.2019, 16:23
    #39784955
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Ребят, есть кнопка созданная в рантайме, по онклику появляется popupmenu, там выбор ярлык или папка.
Суть в том, что гружу в кнопку иконку ярлыка или папки, через opendialog, pathdialog...
Предварительно гружу иконку в image.picture.icon.handle, потом glyph.assign.
После всего этого, на кнопке не появляется изображение до тех пор, пока не наведёшь курсор на него.
Почему так происходит, и как это можно исправить?

Вот код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 var IconIndex: Word;
  Pch: array [0 .. 256] of Char;
begin
  if sOpenDialog1.Execute then
  begin
    S[1] := sOpenDialog1.FileName; // путь к файлу
    StrPCopy(Pch, S[1]);
    IconIndex := 1;
    Convert_simage1.Picture.Icon.Handle := ExtractAssociatedIcon(hInstance, Pch, IconIndex); // иконку в image
    BTN[1].Glyph.Assign(Convert_simage1.Picture.Graphic); // иконку в кнопку
  end;
end;
...
Рейтинг: 0 / 0
12.03.2019, 16:25
    #39784956
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
refresh
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.03.2019, 16:31
    #39784959
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Мимопроходящий,
Забыл написать, я пробовал Refresh, не помогает.
...
Рейтинг: 0 / 0
12.03.2019, 16:43
    #39784965
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
invalidate
...
Рейтинг: 0 / 0
12.03.2019, 16:49
    #39784968
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
goldmi45invalidate
тоже не помогает
...
Рейтинг: 0 / 0
12.03.2019, 16:53
    #39784972
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Tech N9negoldmi45invalidate
тоже не помогает
Repaint ?
...
Рейтинг: 0 / 0
12.03.2019, 17:05
    #39784976
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
GerasimenkoTech N9neпропущено...

тоже не помогает
Repaint ?
))) бред какой-то, не помогает ничего)
...
Рейтинг: 0 / 0
12.03.2019, 17:08
    #39784978
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
значит не тому компоненту делаешь refresh
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.03.2019, 17:16
    #39784983
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Мимопроходящийзначит не тому компоненту делаешь refresh

Тому. Я пробовал в конце процедуры писать эти репаинты и рефреши..
так же вставил код в другую кнопку, которая обращается к нужному speedbutton`у
создал одну кнопку, и уверен в том, что это именно btn[ 1 ]
btn[1].refresh;
btn[1].invalidate;
btn[1].repaint;
Эффекта 0;
...
Рейтинг: 0 / 0
12.03.2019, 17:25
    #39784990
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Tech N9neМимопроходящийзначит не тому компоненту делаешь refresh

Тому. Я пробовал в конце процедуры писать эти репаинты и рефреши..
так же вставил код в другую кнопку, которая обращается к нужному speedbutton`у
создал одну кнопку, и уверен в том, что это именно btn[ 1 ]
btn[1].refresh;
btn[1].invalidate;
btn[1].repaint;
Эффекта 0;
Этих строчек не достаточно.
Нужны строки самого создания, загрузки иконки, и метод/событие из которого они вызываются.
...
Рейтинг: 0 / 0
12.03.2019, 17:50
    #39785009
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Вот вряд ли TSpeedButton рассчитан на иконки.

Сделай промежуточный TBitmap, загрузи в него нужную из картинок иконки, и уже TBitmap назначай кнопке

чему у тебя равно http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Buttons_TSpeedButton_NumGlyphs.html ?
...
Рейтинг: 0 / 0
13.03.2019, 13:12
    #39785345
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Странно, на онклик кнопки, шла проверка, если переменная S[1] пуста, то показываем popupmenu , в нём выбор ярлык или папка, далее opendialog и загрузка иконки.
Убрал popupmenu , начал добавлять иконку тем же методом, сразу по онклик, и картинка появляется, без refresh, invalidate и repaint`a.
...
Рейтинг: 0 / 0
13.03.2019, 15:29
    #39785453
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Tech N9neпеременная S[1] пуста

а что это за переменная, где и как объявлена, кто где и как к ней обращается ?

и нафиг она тебе вообще нужна...

http://www.delphibasics.ru/PromptForFileName.php
...
Рейтинг: 0 / 0
13.03.2019, 18:54
    #39785558
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
AriochTech N9neпеременная S[1] пуста

а что это за переменная, где и как объявлена, кто где и как к ней обращается ?

и нафиг она тебе вообще нужна...

http://www.delphibasics.ru/PromptForFileName.php
глобально
S: array [1 .. 10] of string;
это строковой массив, для хранения в них путей к ярлыкам.
...
Рейтинг: 0 / 0
13.03.2019, 19:37
    #39785578
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
Tech N9neСтранно, на онклик кнопки

т.е. в особом состоянии "кнопка нажата прямо-вот-сейчас"

может быть с этим связано?
...
Рейтинг: 0 / 0
13.03.2019, 19:57
    #39785587
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
AriochTech N9neСтранно, на онклик кнопки

т.е. в особом состоянии "кнопка нажата прямо-вот-сейчас"

может быть с этим связано?
Я вас не понял..
Я уже переделал программу, не использую кнопки, заменил их на Image.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var
  IconIndex: Word;
  Pch: array [0 .. 256] of Char;
begin
  if S[SENSORTAG] = '' then // если переменная пуста
  begin
    if sOpenDialog1.Execute then
    begin
      S[SENSORTAG] := sOpenDialog1.FileName; // путь выбранного файла
      BTN[SENSORTAG].ImageIndex := -1;  // убераю дефолтную картинку
      StrPCopy(Pch, S[SENSORTAG]);
      IconIndex := 1;
      BTN[SENSORTAG].Picture.Icon.Handle := ExtractAssociatedIcon(hInstance,Pch, IconIndex);  // гружу иконку
    end;
  end else // если переменная S[] не пуста
  begin
    ShellExecute(Form1.Handle, nil, PChar(S[SENSORTAG]), nil, nil, SW_RESTORE);  // запускаю файл, путь которого в S[]
  end;
end;


...
Рейтинг: 0 / 0
13.03.2019, 20:10
    #39785590
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
speedbutton glyph картинка появляется не сразу
у кнопок есть три состояния

1. обычное, отжата, торчит вверх
2. включенное (Down = true), типа как радиокнопки, вжатое и завиксированное
3. нажатое прямо вот сейчас, пользователь нажалд кнопку мыши, но ещё не отпустил

И ВСЕ эти состояния (плюс 4-е, кажется, mouse-hover, но хрен с ним) предполагают разные иконки (NumGlyphs)

OnClick работает внутри последнего, 3-го состояния.
но оно в жизни кнопок весьма краткосрочное и нестандартное
вполнe возможно для него делается что-то типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
запомнить состояние
try
  глубокое-нажатие
...
  Do-On-Сlick
....
finally
  восстановить старое состояние
end

....переключиться в состояние 1 или 2

В общем, просто часто не предназначен OnClick для переделывания самого контрола
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / speedbutton glyph картинка появляется не сразу / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]