Перейти к содержанию
Fire Monkey от А до Я

RoschinSpb

Пользователи
  • Постов

    187
  • Зарегистрирован

  • Посещение

  • Победитель дней

    10

Активность репутации

  1. Like
    RoschinSpb получил реакцию от Winexcel в Присвоение окна определенному контролу на форме   
    Можете попробовать что-нибудь извлечь из https://community.embarcadero.com/blogs/entry/xe5-165
    Но в общем присоединяюсь в своём недоумении к Равилю.
  2. Like
    RoschinSpb получил реакцию от Andrey Efimov в TImage scale как применить   
    Заведите TImageList (лучше на отдельном TDataModule), добавьте туда картинки в разных масштабах. На форму положите компонент TGlyph и установите свойства Images и ImageIndex.
    Glyph будет выбирать наиболее подходящую картинку с учетом и масштаба и размеров.
  3. Like
    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
  4. Like
    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 выбрав одно из рекомендованных значений.
  5. Like
    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 выбрав одно из рекомендованных значений.
  6. Like
    RoschinSpb получил реакцию от Ra72 в Уничтожение фрейма при нажатии на кнопку   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  7. Like
    RoschinSpb получил реакцию от Error в Уничтожение фрейма при нажатии на кнопку   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  8. Like
    RoschinSpb получил реакцию от AngryOwl в Уничтожение фрейма при нажатии на кнопку   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  9. Like
    RoschinSpb получил реакцию от Равиль Зарипов (ZuBy) в Уничтожение фрейма при нажатии на кнопку   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  10. Like
    RoschinSpb получил реакцию от rareMax в Уничтожение фрейма при нажатии на кнопку   
    В качестве послесловия.
    Деструктор объекта не может быть вызван внутри метода этого объекта (самоубийства запрещены). Всегда можно поставить точку останова на вызов метода Free/FreeAndNil. И внимательно посмотреть стек вызова, если где-то в стеке вызова присутствует разрушаемый объект, то это не правильно. Сложности добавляет то, что это не обязательно приводит возникновению AV, вполне может быть, что у вас всё будет работать без ошибок, а на другом компьютере, или на другой платформе с ошибками.
    Release на самом деле приводит к отложенному удалению не внутри вызывающего метода, т.е. объект просто помечается как готовый к удалению.
  11. Like
    RoschinSpb получил реакцию от Vitaldj в TImage scale как применить   
    Заведите TImageList (лучше на отдельном TDataModule), добавьте туда картинки в разных масштабах. На форму положите компонент TGlyph и установите свойства Images и ImageIndex.
    Glyph будет выбирать наиболее подходящую картинку с учетом и масштаба и размеров.
  12. Like
    RoschinSpb отреагировална krapotkin в Глобальные переменные в Delphi - зло?   
    лучше сформулировать мягче
    если есть возможность не использовать глобальные переменные, нужно ей пользоваться
    это опыт шишек, набитый десятками проектов )) иногда стоит просто поверить. хотя, конечно, можно и объяснить. но лень ))
  13. Like
    RoschinSpb отреагировална Error в Глобальные переменные в Delphi - зло?   
    http://www.gunsmoker.ru/2011/04/blog-post.html
  14. Like
    RoschinSpb отреагировална kami в Как убить кнопку кликнув на нее саму   
    Он никуда не мог деться:
     

  15. Like
    RoschinSpb получил реакцию от Zawuza в Суперский сайт!   
  16. Like
    RoschinSpb получил реакцию от Равиль Зарипов (ZuBy) в Суперский сайт!   
  17. Like
    RoschinSpb получил реакцию от web_warp в Canvas и FillText в StringGrid'е - разворот времени   
    Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
  18. Like
    RoschinSpb получил реакцию от Kitty в Item.ItemData.Bitmap   
    Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства. 
  19. Like
    RoschinSpb получил реакцию от Rusland в Item.ItemData.Bitmap   
    Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства. 
  20. Like
    RoschinSpb получил реакцию от Равиль Зарипов (ZuBy) в Item.ItemData.Bitmap   
    Обратите внимание, что если вы хотите поменять текстовые настройки, надо также установить свойство StyledSettings. Оно указывает какие текстовые настройки берутся из стиля, а какие из свойства. 
  21. Like
    RoschinSpb получил реакцию от Rusland в Canvas и FillText в StringGrid'е - разворот времени   
    Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
  22. Like
    RoschinSpb получил реакцию от Rusland в Перспективы RAD   
    Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
  23. Like
    RoschinSpb получил реакцию от rareMax в Перспективы RAD   
    Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
  24. Like
    RoschinSpb получил реакцию от Alexander в Перспективы RAD   
    Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
  25. Like
    RoschinSpb получил реакцию от zairkz в Перспективы RAD   
    Дело в том, что на мобилках рисование на канве выполняется существенно медленнее, чем на дэсктопах, тут хоть оптимизируй, хоть нет а узкое место ни куда не денется. При этом все стилевые контролы рисуются именно самопально на канве. Для улучшения ситуации нужен переход на использование нативных контролов, а это уже не рефакторинг, а полное переписывание при этом сложность разработки повышается раза в три (по сравнению с написанием с нуля) из-за необходимости обеспечить совместимость.
×
×
  • Создать...