-
Постов
187 -
Зарегистрирован
-
Посещение
-
Победитель дней
10
Активность репутации
-
RoschinSpb получил реакцию от Winexcel в Присвоение окна определенному контролу на форме
Можете попробовать что-нибудь извлечь из https://community.embarcadero.com/blogs/entry/xe5-165
Но в общем присоединяюсь в своём недоумении к Равилю.
-
RoschinSpb получил реакцию от Andrey Efimov в TImage scale как применить
Заведите TImageList (лучше на отдельном TDataModule), добавьте туда картинки в разных масштабах. На форму положите компонент TGlyph и установите свойства Images и ImageIndex.
Glyph будет выбирать наиболее подходящую картинку с учетом и масштаба и размеров.
-
RoschinSpb получил реакцию от Rusland в Вытащить битмапу из TImageList
ImageList1.Bitmap(Size, Index);
Возвращает картинку растянутую до указанного размера. Размер указывается в физических пикселях, т.е. учитывать масштаб надо самостоятельно (этот метод ни чего не знает о масштабе канвы). При этом выбирается наиболее подходящая по размеру картинка из тех, что имеется.
Есть еще ImageList1.Draw который рисует на канве картинку. Там учитывается масштаб канвы. Т.е. если указали прямоугольник 16x16 а TCanvas.Scale = 2, то будет выбрана картинка 32x32 если имеется.
>> практически полное управление всеми элементами
Очевидно, в ImageList вы можете самостоятельно управлять всеми элементами иначе каким образом туда попадают данные из редактора.
Может поможет статья.
>> скажем пихать полученные битмапы в ListView
Не пробовали посмотреть демку что ли? Там есть добавление пунктов в ListView в Run-Time
C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ImageList\ImageListDemo.dpr
-
RoschinSpb получил реакцию от Rusland в Обработка клавиатуры
См. документацию источник знаний: KeyDown или TKeyEvent.
Key это скан код клавиши приведенный к виртуальным кодам клавиш windows. Это значение получается когда нажато некоторое сочетание клавиш к примеру Ctrl+<пробел>, такие нажатия последовательно передаются всем контролам, пока один из них не обработает его и не сбросит в 0. За некоторыми исключениями эти значения определяются физическим расположением клавиш, т. е. английская клавиша <A> будет всегда располагаться приблизительно в одном и том же месте и на Mac и на Win и в России и в Гондурасе.
Keychar это введенная буква. Т.е. обычная буква которая вводится при наборе текста зависит от платформы, языка, выбранной раскладки способа ввода и прочих параметров. Такие нажатия передаются только фокусному контролу.
Так что для Ctrl+<пробел> надо использовать проверку if (Key = vkSpace) and (ssCtrl in shift).
Для проверки нажатия Ctrl+Ф надо использовать проверку if (Key = vkA) and (ssCtrl in shift) и ни каких Key = Ord('Ф') потому, что неизвестно какая на этом месте будет буква на каком-нибудь Mac из Японии. И более того
Key = Ord('Ф') = $D4 - это зарезервированный код клавиши
Key = Ord('ф') = $F4 - это VK_OEM_ENLW (Only used by Nokia)
Key = Ord('a') = $61 - это vkNumpad1 (1 key numeric keypad)
Но проще было бы создать действие (см. TActionList и TAction), назначить на него ShortCut выбрав одно из рекомендованных значений.
-
RoschinSpb получил реакцию от Andrey Efimov в Обработка клавиатуры
См. документацию источник знаний: KeyDown или TKeyEvent.
Key это скан код клавиши приведенный к виртуальным кодам клавиш windows. Это значение получается когда нажато некоторое сочетание клавиш к примеру Ctrl+<пробел>, такие нажатия последовательно передаются всем контролам, пока один из них не обработает его и не сбросит в 0. За некоторыми исключениями эти значения определяются физическим расположением клавиш, т. е. английская клавиша <A> будет всегда располагаться приблизительно в одном и том же месте и на Mac и на Win и в России и в Гондурасе.
Keychar это введенная буква. Т.е. обычная буква которая вводится при наборе текста зависит от платформы, языка, выбранной раскладки способа ввода и прочих параметров. Такие нажатия передаются только фокусному контролу.
Так что для Ctrl+<пробел> надо использовать проверку if (Key = vkSpace) and (ssCtrl in shift).
Для проверки нажатия Ctrl+Ф надо использовать проверку if (Key = vkA) and (ssCtrl in shift) и ни каких Key = Ord('Ф') потому, что неизвестно какая на этом месте будет буква на каком-нибудь Mac из Японии. И более того
Key = Ord('Ф') = $D4 - это зарезервированный код клавиши
Key = Ord('ф') = $F4 - это VK_OEM_ENLW (Only used by Nokia)
Key = Ord('a') = $61 - это vkNumpad1 (1 key numeric keypad)
Но проще было бы создать действие (см. TActionList и TAction), назначить на него ShortCut выбрав одно из рекомендованных значений.
-
RoschinSpb получил реакцию от Ra72 в Уничтожение фрейма при нажатии на кнопку
В качестве послесловия.
Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
-
RoschinSpb получил реакцию от Error в Уничтожение фрейма при нажатии на кнопку
В качестве послесловия.
Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
-
RoschinSpb получил реакцию от AngryOwl в Уничтожение фрейма при нажатии на кнопку
В качестве послесловия.
Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
-
RoschinSpb получил реакцию от Равиль Зарипов (ZuBy) в Уничтожение фрейма при нажатии на кнопку
В качестве послесловия.
Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
-
RoschinSpb получил реакцию от rareMax в Уничтожение фрейма при нажатии на кнопку
В качестве послесловия.
Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
-
RoschinSpb получил реакцию от Vitaldj в TImage scale как применить
Заведите TImageList (лучше на отдельном TDataModule), добавьте туда картинки в разных масштабах. На форму положите компонент TGlyph и установите свойства Images и ImageIndex.
Glyph будет выбирать наиболее подходящую картинку с учетом и масштаба и размеров.
-
RoschinSpb отреагировална krapotkin в Глобальные переменные в Delphi - зло?
лучше сформулировать мягче
если есть возможность не использовать глобальные переменные, нужно ей пользоваться
это опыт шишек, набитый десятками проектов )) иногда стоит просто поверить. хотя, конечно, можно и объяснить. но лень ))
-
RoschinSpb отреагировална Error в Глобальные переменные в Delphi - зло?
http://www.gunsmoker.ru/2011/04/blog-post.html
-
-
-
-
RoschinSpb получил реакцию от web_warp в Canvas и FillText в StringGrid'е - разворот времени
Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
-
RoschinSpb получил реакцию от Kitty в Item.ItemData.Bitmap
Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства.
-
RoschinSpb получил реакцию от Rusland в Item.ItemData.Bitmap
Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства.
-
RoschinSpb получил реакцию от Равиль Зарипов (ZuBy) в Item.ItemData.Bitmap
Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства.
-
RoschinSpb получил реакцию от Rusland в Canvas и FillText в StringGrid'е - разворот времени
Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
-
RoschinSpb получил реакцию от Rusland в Перспективы RAD
Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
-
RoschinSpb получил реакцию от rareMax в Перспективы RAD
Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
-
RoschinSpb получил реакцию от Alexander в Перспективы RAD
Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
-
RoschinSpb получил реакцию от zairkz в Перспективы RAD
Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.