powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / speedbutton glyph картинка появляется не сразу
17 сообщений из 17, страница 1 из 1
speedbutton glyph картинка появляется не сразу
    #39784955
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, есть кнопка созданная в рантайме, по онклику появляется 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
speedbutton glyph картинка появляется не сразу
    #39784956
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refresh
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39784959
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
Забыл написать, я пробовал Refresh, не помогает.
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39784965
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invalidate
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39784968
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45invalidate
тоже не помогает
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39784972
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9negoldmi45invalidate
тоже не помогает
Repaint ?
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39784976
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoTech N9neпропущено...

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

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

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

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

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

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

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

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

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

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

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

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

может быть с этим связано?
...
Рейтинг: 0 / 0
speedbutton glyph картинка появляется не сразу
    #39785587
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
speedbutton glyph картинка появляется не сразу
    #39785590
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у кнопок есть три состояния

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


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