-
Постов
1 204 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Активность репутации
-
Rusland отреагировална Равиль Зарипов (ZuBy) в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 1]
Ссылка: http://blog.rzaripov.kz/2017/02/firebase-android-ios.html
Автор: Зарипов Равиль @ZuBy
Описание: Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS
-
Rusland отреагировална krapotkin в [Андроид] интерфейс приложения
я бы вообще в лоб сделал в GridPanelLayout внутри ScrollBox'а
-
-
Rusland отреагировална Ghk в TThread.Priority
Андройд девелопер в помощь - на официальном сайте все прекрасно расписано - значения приоритетов от 0 до 10
https://developer.android.com/reference/java/lang/Thread.html#MAX_PRIORITY
ну и выше там по потокам в андройде почитаете
-
-
Rusland отреагировална Andrey Efimov в В определенное время отправлять SMS - как лучше реализовать?
[Статья][Android] AlarmManager - Автозапуск приложения в назначенное время
-
-
Rusland отреагировална Kitty в krapotkin и Равиль Зарипов
Даже не знаю или в правильный раздел форума пишу. Я, например, хочу поблагодарить в своей теме - krapotkin и Равиль Зарипов за очень полезные ответы. Реально помогают решить вопросы. Спасибо.
Хотя все они паскалисты, все же удается иногда получить код на С++ со стороны. Очень в этом помогает автор Indy rlebeau, например эту статью: Статья
он переводит в С++ тут: C++ и никто бы другой не помог. В этом плане тяжело, без него и никак вопрос не решить.
А этот форум это симбиоз ума и решений! Спасибо Ярославу за реализацию и хоты бы одного спеца по С++ как по Дельфи и - вот оно счастье.
Спасибо!
-
Rusland отреагировална RoschinSpb в Обработка клавиатуры
См. документацию источник знаний: 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 выбрав одно из рекомендованных значений.
-
Rusland отреагировална Andrey Efimov в Обработка клавиатуры
if Ord(KeyChar) = vkSpace then Memo1.Lines.Add('Пробел') или if KeyChar = ' ' then Memo1.Lines.Add('Пробел') Проверил на всякий случай, работает отлично.
-
Rusland отреагировална AngryOwl в FMX TTaskbar
Самое простое решение ("на коленке"):
uses ... {$IFDEF MSWINDOWS} System.Win.ComObj, Winapi.ShlObj, {$ENDIF} ... //------------------------------------------------- type TTaskBarState = record name : string; value : byte; end; TFMXTaskBar = class(TPersistent) private fTaskBarList : ITaskBarList3; fTaskBarState : integer; fTaskBarProgress : integer; fAlertState : Boolean; procedure setTaskBarState(newState:integer); procedure setTaskBarProgress(newValue : integer); procedure setAlertState(const Value: Boolean); protected public property AlertState: Boolean read fAlertState write setAlertState; property TaskBarState : integer read fTaskBarState write setTaskBarState; property TaskBarProgress : integer read fTaskBarProgress write setTaskBarProgress; constructor Create; destructor Destroy; override; end; //------------------------------------------------- const taskStates : array [0..4] of TTaskBarState = ( (name: 'TBPF_NOPROGRESS'; value: TBPF_NOPROGRESS), (name: 'TBPF_INDETERMINATE'; value: TBPF_INDETERMINATE), (name: 'TBPF_NORMAL'; value: TBPF_NORMAL), (name: 'TBPF_ERROR'; value: TBPF_ERROR), (name: 'TBPF_PAUSED'; value: TBPF_PAUSED)); //------------------------------------------------- var MainTaskBar: TFMXTaskBar; //------------------------------------------------- { TFMXTaskBar } constructor TFMXTaskBar.Create; var tbList : ITaskBarList; hr : HRESULT; begin tbList := CreateComObject(CLSID_TaskBarList) as ITaskBarList; hr := tbList.QueryInterface(IID_ITaskBarList3, fTaskBarList); if hr <> S_OK then begin fTaskBarList := nil; tbList._Release; end; end; destructor TFMXTaskBar.Destroy; begin inherited; end; procedure TFMXTaskBar.setAlertState(const Value: Boolean); begin if assigned(fTaskBarList) then if fAlertState <> Value then begin fAlertState := Value; if Value then begin setTaskBarState(3); // TBPF_ERROR setTaskBarProgress(100); end else begin setTaskBarState(0); setTaskBarProgress(0); end; end; end; procedure TFMXTaskBar.setTaskBarProgress(newValue: integer); begin if assigned(fTaskBarList) then fTaskBarList.SetProgressValue(ApplicationHWND, newValue, 100); end; procedure TFMXTaskBar.setTaskBarState(newState: integer); begin if assigned(fTaskBarList) then fTaskBarList.SetProgressState(ApplicationHWND, taskStates[newState].value); end; //------------------------------------------------- initialization MainTaskBar := TFMXTaskBar.Create; finalization if Assigned(MainTaskBar) then FreeAndNil(MainTaskBar);
-
Rusland отреагировална dnekrasov в Как запустить дочерний процесс на Маке?
Вот пример как у меня идет добавление в архив используя zip в MacOS:
function ZipAdd(AArchName, AFileName: String): boolean; {$IFDEF MACOS} var s, sRoot, sFileName, sArchName: String; {$ENDIF} begin Result := False; {$IFDEF MACOS} try if DirectoryExists(AFileName) then begin if AFileName[AFileName.Length] = PathDelim then System.Delete(AFileName, AFileName.Length, 1); sRoot := ExtractFilePath(AFileName); AFileName := AFileName.Remove(0, sRoot.Length); s := Format('pushd "%s"; zip -r "%s" "%s"; popd', [sRoot, AArchName, AFileName]); _system(PAnsiChar(UTF8String(s))); end else begin s := Format('zip -j "%s" "%s"', [AArchName, AFileName]); _system(PAnsiChar(UTF8String(s))); end; Result := FileExists(AArchName); except Result := False; end; {$ENDIF} end; Замените зиповские команды архивирования на раровские разархивирования, добавьте необходимую Вам логику и наслаждайтесь
-
Rusland отреагировална rareMax в TNetHTTPClient, php и select
На сколько я понимаю это не совсем вопрос по делфи... но держи
http://ru.stackoverflow.com/questions/284297/Вывести-из-базы-mysql-в-виде-json-массива
-
Rusland отреагировална AngryOwl в Уничтожение фрейма при нажатии на кнопку
у фрейма:
private fOnCloseInfo : TNotifyEvent; protected procedure DoOnCloseInfo; dynamic; public { Public declarations } /// <summary> Обработчик события закрытия фрейма </summary> property OnCloseInfo : TNotifyEvent read fOnCloseInfo write fOnCloseInfo; end; procedure TframeInfo.DoOnCloseInfo; begin // Если обработчик назначен, то запускаем его. if Assigned(fOnCloseInfo) then fOnCloseInfo(Self); end; при инициализации фрейма (не важно где и как - когда создается):
frameInfo.OnCloseInfo := fmMain.DoOnCloseInfo; при нажатии на кнопку:
DoOnCloseInfo; в главной (или любой другой форме, которая будет отрабатывать нажатие кнопки во фрейме):
// можно в любой секции, смотря что нам нужно procedure DoOnCloseInfo(Sender: TObject); procedure TfmMain.DoOnCloseInfo(Sender: TObject); begin if Assigned(frameInfo) then FreeAndNil(frameInfo); end; типа так...
-
Rusland получил реакцию от Kitty в Живое связывание с таблицей БД
Применение LiveBindings в Delphi-проектах
Технология LiveBindings стала неотъемлемой частью большинства средств разработки программ крупнейших производителей решений для разработчиков ПО. На вебинаре пройдет практическое знакомство по применению LiveBindings в программах на RAD Studio, Delphi и C++Builder с применением VCL или FMX в Design-time и Run-time.
16 марта 2017 12:00 МСК.
-
Rusland получил реакцию от Равиль Зарипов (ZuBy) в Живое связывание с таблицей БД
Применение LiveBindings в Delphi-проектах
Технология LiveBindings стала неотъемлемой частью большинства средств разработки программ крупнейших производителей решений для разработчиков ПО. На вебинаре пройдет практическое знакомство по применению LiveBindings в программах на RAD Studio, Delphi и C++Builder с применением VCL или FMX в Design-time и Run-time.
16 марта 2017 12:00 МСК.
-
Rusland отреагировална krapotkin в Надолго зависает код при загрузке из интернета
ну, потенциальное место проблемное есть в кодировке
ms создается в ANSI а вот get происходит в некоей дефолтной скорее всего UTF-8, т.к. никаких заголовков в HttpClient вы не установили.
например
FHttp:=THTTPClient.Create();
FHttp.AcceptCharSet:='utf-8';
FHttp.ContentType:='application/json';
FHttp.Accept := 'application/json';
FHttp.CustomHeaders['Accept-Language']:='ru_RU';
-
Rusland получил реакцию от MaratBest в Надолго зависает код при загрузке из интернета
Именно в поток
TTask.Run( procedure begin TThread.Synchronize(TThread.CurrentThread, procedure begin end); end);
-
Rusland получил реакцию от Kitty в Укажите направление как работать с ListView?
Вот тут видео, которое обычно дает уважаемый krapotkin, оно "о чем" и на английском. Нужно понять что ListView не обычный компонент - нужно научиться с ним работать. На этом форуме много примеров
-
Rusland отреагировална sinuke в Drag в мобильных приложениях
необходимо использовать жесты. обрабатывать их нужно в событии OnGesture
для определения того, что происходит в данный момент, есть EventInfo, с помощью которого можно узнать начался жест, окончился или нужно действовать по инерции (это свойство Flags). так же с помощью EventInfo можно узнать, какой именно жест происходит, а так же текущие координаты
в качестве примера вот можете глянуть мою "демку" (это я делал пробу пера для одного проекта). код не претендует на звание эталонного, но вроде понятный
test_touchanim.zip
-
-
Rusland отреагировална DrunyaRuma в com-порт FireMonkey
Да я видел ее, у них не только для Prolific, но и для других есть. Скачал, установил, судя по всему они тоже за основу брали Java библиотеки и даже открытые из GitHub. Если получится что-то отпишусь.
-
Rusland отреагировална Ghk в Builder C++ матерится на Synchronize при компиляции под андройд
Дело было не в бобине ...©
Обновление SDK до последней версии решило проблему! Урааа !
-
Rusland отреагировална rareMax в Как Delphi собирает apk файл?
Играйся, http://www.javadecompilers.com/apk
-