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

MaratBest

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

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

  • Посещение

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения MaratBest

  1. доступ вроде есть, у меня там встроенный opendialog есть, он работает Ну и android 13 поддерживает только Rad studio 11.3 у меня , просто delphi 11.3 а не Rad Studio -( где можно раздобыть TJEnvironment и TJSettings из Rad Studio?
  2. Добрый день. чуть-чуть поторопился... Вначале промучился с ошибкой I/O Error 13 при попытке чтения файла оказалось insPath содержит полный путь "root/storage/emulated/0/файл" системе в итоге зашло без рут "/storage/emulated/0/файл" это все зработало на планшете , где андроид 8.0 на телефоне где android 13 , procedure TMainForm.FormCreate(Sender: TObject); var ... begin IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification, HandleIntentMessage); logSave('IMessageSubscriptionID :='+inttostr(IMessageSubscriptionID)); тут выходит значение IMessageSubscriptionID =327 и тишина, в логе нет ни единого сообщения , в какую сторону копать ?
  3. Спаcибо за ответ. поменял манифест, приложение попадает выбор открыть с помощью в андроид ! а вот в приложениее не перехватывает сообщение подставил в свой код procedure TMainForm.FormCreate(Sender: TObject); var ... begin IMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageReceivedNotification, HandleIntentMessage); logSave('IMessageSubscriptionID :='+inttostr(IMessageSubscriptionID)); тут выходит значение IMessageSubscriptionID =327 procedure TMainForm.HandleIntentMessage(const Sender: TObject; const M: TMessage); begin try logSave('HandleIntentMessage'); if M is TMessageReceivedNotification then begin logSave('HandleIntentMessage'); OnNewIntent(TMessageReceivedNotification(M).Value); end; except logSave('HandleIntentMessage except'); end; end; function TMainForm.OnNewIntent(Intent: JIntent): Boolean; var insPath: String; uri: Jnet_Uri; begin Result := False; try if Intent <> nil then begin uri := Intent.getData; if uri <> nil then begin insPath:= JStringToString( uri.getEncodedPath); logSave('Работаем с файлом:'+insPath); if (ExtractFileExt(insPath)='.x10') then begin logSave('Работаем с файлом:'+insPath); // работаете с файлом end; end; end; except logSave('OnNewIntent except'); end; end; в логе нет ни единого сообщения
  4. Доброго времени суток. Написано приложение Delphi 11 для Android. На данный момент появилась необходимость открывать файлы формата *.х10 как зарегистрировать на андроид при установке приложения, что с помощью него можно отрывать файлы *.х10 (аналог,например при открытии *.pdf давал на выбор acrobat, chrome и т.д) и второй вопрос ,как понять что приложению передан файл на открытие ? типа paramstr или как ?
  5. type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure KeyDown(NUM: Byte); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin KeyDown(TControl(Sender).Tag); timer1.Tag:=TControl(Sender).Tag; Timer1.Enabled:=true; end; procedure TForm1.ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Timer1.Enabled:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin KeyDown(Timer1.tag); end; procedure TForm1.KeyDown(NUM: Byte); begin case NUM of 1: label1.text:=label1.text+'нажата 1'; 2: label1.text:=label1.text+'нажата 2'; 3: label1.text:=label1.text+'нажата 3'; end; end; end. на форме 3 TButton. свойство tag от 1 до 3 соотвественно всем 3 кнопкам устанавливаю OnMouseDown =ButtonMouseDown OnMouseUp =ButtonMouseUp все работает !!! вопрос у меня был "не является ли это большим костылем " может кто подскажет поизящнее код
  6. наверное забыл написать, приложение android таймер нужен, чтобы клавиша печатала символ, пока будет нажата, типа как в windows клавиатура.
  7. Делаю свою клавиатуру. не знаю правильно ли делаю, но выбрал такой путь. на форме допустим 10 TButton. tag от 1 до 10 соотвественно создаю процедуру , всем 10 кнопкам устанавливаю ее на OnMouseDown ButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin KeyDown(TControl(Sender).Tag); timer1.Tag:=TControl(Sender).Tag; Timer1.Enabled:=true; end; на OnMouseUp такой код(всем кнопкам) ButtonMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Timer1.Enabled:=false; end; обработка таймера (interval 500) procedure TForm1.Timer1Timer(Sender: TObject); begin KeyDown(Timer1.tag); end; procedure TForm1.KeyDown(NUM: Byte); begin case NUM of 1: label1.text:=label1.text+'нажата 1'; 2: label1.text:=label1.text+'нажата 2'; 3: label1.text:=label1.text+'нажата 3'; ... end; не является ли это большим костылем ? там где label1.text:=label1.text+'нажата 1'; буду отсылать своей процедуре код нажатой клавиши
  8. Добрый день !!! может у кого есть пример как проиграть буфер на android устройстве ? на windows делал через procedure TMainFormEmu.PlayBuffer(Buffer: array of byte); //процедура проигрывает буфер begin with header do begin wFormatTag := WAVE_FORMAT_PCM; // формат РСМ nChannels := 1; // моно nSamplesPerSec := 44100; // частота дискретитатции 44.1 Кгц wBitsPerSample := 8; // выборка 8 бит nBlockAlign := nChannels * (wBitsPerSample div 8); nAvgBytesPerSec := nSamplesPerSec * nBlockAlign; cbSize := 0; end; // if Opened = true then stopPlay; hEvent:=CreateEvent(nil,false,false,nil); if WaveOutOpen(addr(waveOut), 0, @header, hEvent, 0, CALLBACK_WINDOW) <> MMSYSERR_NOERROR then begin CloseHandle(hEvent); Exit; end; pBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, length(Buffer)); pBuffer := GlobalLock(pBuf); with outHdr do begin lpData := PBuffer; dwBufferLength := length(Buffer); dwUser := 0; dwFlags := 0; dwLoops := 0 end; err:= WaveOutPrepareHeader(waveOut, @outHdr, sizeof(outHdr)); if Err <> 0 then Exit; copyMemory(pBuffer, @Buffer, length(Buffer)); err:= WaveOutWrite(waveOut, @outHdr, sizeof(outHdr)); if Err <> 0 then Exit; waveOutReset(waveOut); waveOutUnprepareHeader(waveOut,@outHdr,sizeof(wavehdr)); waveOutClose(waveOut); end;
  9. На форме сеть куча ListBox, ListView, Memo,ItemListBox они все до безобразия белые как поменять их цвет допустим на черный?
  10. Задача получить нажатый символ (или код символа) на виртуальной клавиатуре! D10, android. Для примера. есть форма, есть кнопка , при нажатии выводим виртуальную клавиатуру, указываем вывод на form1 (или edit, memo) Keyboard.ShowVirtualKeyboard(memo1); как получить нажатый символ ? или я туплю..... или ...хз всю голову сломал думал через Edit сделать Edit1KeyDown, но там Key всегда 0 если цифры, коды если только служебные клавиши, на символы вообще не реагирует думаю сеть простой способ ?
×
×
  • Создать...