Всім привіт!
Я новачок в FMX.
Стикаюся з проблемами відмінностей з VCL.
Деякі проблеми:
1) Текст в edit мишею неможливо виділити, виділення скаче.
Думаю пов'язано з заточкою під тач, як полагодити і чи можливо - ніде не знайшов.
2) Пофарбувати грід (рядок) в залежності від значення можна?
У VCL це робиться OnDrawColumnCell
Дякуємо!
Для FMX-додатки знадобилося розмістити кнопки з бітмапами в заголовку OSX-вікна:
Тут був, це читав, але відповідного Delphi-рішення знайти не зміг. Є якісь ідеї?
Вообщем зіткнувся з такою бідою і не знаю як вирішити!
Мені потрібно зробити в якийсь контейнер накидати лайаути, кнопки, Імейджа, лейбли і тд.
Потім потрібно щоб це все можна було тягати по скролбоксу і створювати копію такого ж контейнера! Здавалося б все можна зробити але тут я в глухому куті, чому?
Я кинути TCalloutRectangle на форму в ньому розташував як мені потрібно елементи і навчив його рухатися в скролбоксе. Сиджу я тут такий радію дивлюся на код)
procedure TForm1.crtPhaseMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin zX: = X; zY: = Y; zIsDragging: = true; (Sender as TControl) .BringToFront; (Sender as TShape) .Fill.Color: = TAlphaColorRec.Lightblue; (Sender as TShape) .Root.Captured: = (Sender as TShape); end; procedure TForm1.crtPhaseMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Single); begin if zIsDragging and (ssLeft in Shift) then begin (Sender as TControl) .Position.X: = (Sender as TControl) .Position.X + X - zX; (Sender as TControl) .Position.Y: = (Sender as TControl) .Position.Y + Y - zY; // (Sender as TShape) .Fill end; end; Потім такий же радісний беру і копіюю код з іншого проекту де у мене прекрасно створювалися копії накидати мною.
procedure TForm1.Button1Click (Sender: TObject); var Layout: TButton; begin Layout: = TButton.Create (GridLayout1); Layout.Parent: = GridLayout1; Layout.StyleLookup: = 'MainStyle3'; Layout.Position.X: = Layout1.Position.X + 10; Layout.Position.Y: = Layout1.Position.Y + 10; Layout.Visible: = true; GridLayout1.Height: = GridLayout1.Height + Layout.Height; end; Сиджу і думаю ось контрол зробив він за формою волочиться круто шас ще й навчу його многожіть)))
Але тут гаряча мавпочка підкидає Сурпрайз)
У TCalloutRectangle і йому подібним немає властивості LoockupStyle. А це значить що стиль я йому зрадити не можу) Але він добре пересувається по формі)
Ок роблю кнопку він ніби як стиль застосовує, корява але це возмнів мій касяк) Але він не пересувається по формі, а при кліці по ньому видає помилку
First chance exception at $ 773ADAE8. Exception class EInvalidCast with message 'Invalid class typecast'. Process RPScenarioEditor.exe (4084) ЧПА робити я в замішанні. Підкажіть будь ласка.
Зіткнувся з такою проблемою, (Delphi Seattle, OSX + WIndows 10) роблю форму зі своїм заголовком, при встановлених властивостях Transperency: = True або BorderStyle: = None,
перехід в режим FullScreen відпрацьовується коректно (форма не змінює розмір на максимальний), вирішив перед переходом в повноекранний режим встановлювати Transperency: = False і BorderStyle відмінний від None, але програма вилітає, іноді відразу іноді на 2-3 раз зміни параметрів, причому незалежно від того що міняю прозорість або бордер. якщо запускати через відладчик то вивалюється на таке -
в System.Internal.ExcUtils;
begin
raise GetExceptionObject (ExceptionEIP, FaultAddr, ErrorCode);
end;
під Windows все працює нормально, без всяких викрутасів
для перевірки можна зробити порожню форму, дві кнопки. і скажемо панель за яку перетягувати форму
і три обработчіка-
procedure TForm1.Rectangle1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
if (Button = TMouseButton.mbLeft) and (y <25) then StartWindowDrag;
end;
procedure TForm1.sbExpandClick (Sender: TObject);
begin
i f BorderStyle = TFmxFormBorderStyle.None then
BorderStyle: = TFmxFormBorderStyle.Single
else BorderStyle: = TFmxFormBorderStyle.None;
end;
procedure TForm17.sbFullClick (Sender: TObject);
begin
FullScreen: = not FullScreen;
end;
Може хто стикався, як під OSX в Рантайм міняти у форми прозорість і бордер НЕ вивалюючись в виключення, або нормально обробляти перехід в повноекранний режим у прозарчной (або без стандартного заголовка) форми
Дякуємо
Всім доброго дня!
Після поновлення OSX до El Capitan з'явився один ефект, який сильно заважає. У моїй програмі я не використовую FullScreen для форм. Справа в тому, що при FullScreen на OSX при декількох відкритих вікнах, особливо якщо деякі з них модальні бувають глюки, коли немодального вікно раптом стає поверх всіх вікон, але при цьому неактивним, т. К. Є модальне вікно, на якому зараз фокус. Раніше я не парився з цього приводу, т. К. Моє додаток просто розгорталося так само, як в винде. Але після поновлення на El Capitan в заголовку форми відображається кнопка переходу в в FullScreen в незалежності від значень відповідних прапорців у TForm. Чи є який-небудь спосіб заборонити вікна переходити в FullScreen?
Заздалегідь дякую.
Доброго всім дня. Зіткнувся з наступною проблемою:
Є додаток для OSX, написане на FMX (.app, упаковане в dmg). Якщо користувач завантажує це додаток з сайту (сторонній сайт, що не AppStore), то при запуску OSX каже, що це додаток можна запускати, т. К. Невідомий видавець і ін. Так ось, що конкретно потрібно зробити з цим додатком (перед деплоем або вже після), щоб OSX НЕ бурчала? Просто хочеться заздалегідь дізнатися, до того, як заплатити $ 99 для підключення до Developer program. Заздалегідь дякую.
Доброго всім дня! У мене в самий невідповідний момент виникла наступна проблема:
Є додаток для Win і Mac. Працює з SQLite (Через FDQuery).
Природно, в базі купа даних з кирилицею. Так ось, на Win - все нормально, на одному Mac (10.10) - теж все добре. Спробував поставити на другий Mac (10.9.5) - b і ось там вже почалися проблеми з кодуванням. Причому, читає з таблиці
S: = Query.FieldByName ( 'Title'). AsString; // Без проблем а ось при записі в таблицю
Query.ParamByName ( 'Title'). AsString: = 'Заголовок'; У таблицю записується '. '(Причому саме запис йде неправильно). При підключенні до бази Вказую, що StringFormat = Unicode.
Може хтось стикався з таким вже?
Є підозри, що на 10.9.5 якась стара dylib, яка неправильно працює з кирилицею. тоді, напевно, потрібно підключати свою до додатка, але знову ж таки, де її взяти і як підключити?
Створюю глобальний hook на кілька подій:
var EvtTap: CFMachPortRef; RunLoopSource: CFRunLoopSourceRef; . procedure CreateGlobalHook; var EvtMask: UInt64; begin if EvtTap = nil then begin EvtMask: = (1 shl kCGEventKeyDown) or (1 shl kCGEventFlagsChanged) or (1 shl kCGEventLeftMouseUp); EvtTap: = CGEventTapCreate (kCGAnnotatedSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, EvtMask, @EventTapHandler, nil); RunLoopSource: = CFMachPortCreateRunLoopSource (kCFAllocatorDefault, EvtTap, 0); CFRunLoopAddSource (CFRunLoopGetCurrent, RunLoopSource, kCFRunLoopCommonModes); end; CGEventTapEnable (EvtTap, 1); end; function EventTapHandler (proxy: CGEventTapProxy; type_: CGEventType; event: CGEventRef; refcon: Pointer): CGEventRef; cdecl; var iKey: Integer; iType: Integer; begin Result: = event; iType: = CGEventGetType (event); iKey: = CGEventGetIntegerValueField (event, kCGKeyboardEventKeycode); case iType of kCGEventFlagsChanged. ; kCGEventLeftMouseUp. ; kCGEventKeyDown. ; end; end; При обробці події виникає проблема: приходять всі події крім kCGEventKeyDown У документації знайшов, що kCGEventKeyDown і kCGEventKeyUp приходять тільки в тому випадку якщо додаток запущено від root-а або внесено в список "System Preferences-> Security Privacy-> Privacy-> Accessibility "
Може хто знає як мені програмно отримати доступ до цих подій?
Підкажіть, будь ласка, як реалізувати глобальні хоткеі для свого застосування в OS X