- 0
-
Похожий контент
-
От Wovan2
Здравствуйте.
Пишу на Delphi 7. И все было нормально пока не у нас не появился терминал сбора данных на Androide. На Delphi 10 написал простенькое приложение. Но тут встала проблема с занесением данных в поле ввода со сканера штрихкода. В инете нашел, что это дело просто решается интентами. Вообще в windows я подобное делал: вешал процесс, следящий за com-портом, и при появлении данных на нем пересылал их куда надо. В Android должно быть не сложнее. Но я запутался во всей этой куче параметров и функций, передаваемых и получаемых "намерениями".
В общем вот что мы имеем на данный момент.
В настройках сканера прописано:
Intent output - android.intent.ACTION_DECODE_DATA Intent string extra - barcode_string На просторах нашел запуск BroadcastReceiver.
На событие получения сообщения повесил
ed.Text := JStringToString(csIntent.getExtras.getString(TJIntent.JavaClass.EXTRA_INTENT)); где csIntent параметр из BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent); Но ничего не выходит.
Я подозреваю, что данные из сканера где-то в структуре csIntent. Но, к сожалению, в отладке дальше адреса этой переменной пробраться не получилось.
Причем строка ed.Text := JStringToString(csIntent.getAction); возвращает в Text название интента: "android.intent.ACTION_DECODE_DATA".
Помогите разобраться со структурой JIntent. Спасибо.
-
От Alexander Samosyuk
Создаю свой компонент с визуализацией Label в Edit, см. рис.
При компиляции появляется еще одни Label. А при отрисовке формы нельзя скопировать готовый компнонент - выдает ошибку.
Подскажите, как избавиться от дубликата.
t
type TShowLabel = (Show, Hide); TEditVisualLabel = class(TEdit) private TextLabel : TLabel; FloatVErt : TFloatAnimation; FloatSize : TFloatAnimation; FloatColor : TColorAnimation; FLabCAp : string; function GetSHow: TShowLabel; Procedure SetShow(Value : TShowLabel); function GetLabelCaption: string; Procedure SetLabelCaption(Value : string); function GetLabelFontColor: TAlphaColor; Procedure SetLabelFontColor(Value : TAlphaColor); function GetStopValue : Single; procedure SetStopValue(Value : Single); function GetStartValue: Single; procedure SetStartValue(Value : Single); function GetStopFont: Single; procedure SetStopFont(Value : Single); function GetStartFont: Single; procedure SetStartFont(Value : Single); { Private declarations } protected procedure Enter(Sender : TObject); procedure Exi(Sender : TObject); { Protected declarations } public { Public declarations } published property LabelFontColor : TAlphaColor read GetLabelFontColor write SetLabelFontColor; property LabelCaption: string read GetLabelCaption write SetLabelCaption; property LabelPositionStop : Single read GetStopValue write SetStopValue; property LabelPositionStart : Single read GetStartValue write SetStartValue; property LabelSizeStopFont : Single read GetStopFont write SetStopFont; property LabelSizeStartFont: Single read GetStartFont write SetStartFont; property LabelVisible : TShowLabel read GetSHow write SetSHow default TShowLabel(1); constructor Create(aowner: TComponent);override; { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TEditVisualLabel]); end; constructor TEditVisualLabel.Create(aowner: TComponent); var Del: TLabel; Family,Style,FontColor : TStyledSetting; begin inherited Create(AOwner); TextLabel := TLabel.create(Self); TextLabel.Parent := self; // Скорее всего, что именно здесь весь затык, почему оно выполняется дважды TextLabel.StyledSettings := [Family]; TextLabel.Align := TAlignLayout(2); TextLabel.TextSettings.FontColor := TAlphaColorRec.Silver; TextLabel.TextSettings.Font.Size := 14; TextLabel.SetSubComponent(true); FloatVErt := TFloatAnimation.Create(TextLabel); FloatVErt.Parent := TextLabel; FloatVErt.PropertyName := 'Position.Y'; FloatVErt.StopValue := -20; FloatVErt.StartValue := 0; FloatSize := TFloatAnimation.Create(TextLabel); FloatSize.Parent := TextLabel; FloatSize.PropertyName := 'TextSettings.Font.Size'; FloatSize.StopValue := 11; FloatSize.StartValue := 14; FloatColor := TColorAnimation.Create(TextLabel); FloatColor.Parent := TextLabel; FloatColor.PropertyName := 'TextSettings.FontColor'; FloatColor.StartValue := TAlphaColorRec.Silver; LabelFontColor := TAlphaColorRec.Black; LabelVisible := TShowLabel(0); TextLabel.Align := TAlignLayout(2); //TextLabel.Width := 5000; //FloatColor.StopValue := LabelFontColor; OnExit := Exi; OnEnter := Enter; end; procedure TEditVisualLabel.Enter(Sender : TObject); begin inherited; if TextLabel.Position.Y<>FloatVErt.StopValue then begin FloatVErt.Inverse := false; FloatVErt.Start; FloatSize.Inverse := false; FloatSize.Start; FloatColor.Inverse := false; FloatColor.Start end; end; procedure TEditVisualLabel.Exi(Sender: TObject); begin inherited; if (Self.Text='') and (TextLabel.Position.Y<>0) then begin FloatVErt.Inverse := true; FloatVErt.Start; FloatSize.Inverse := true; FloatSize.Start; FloatColor.Inverse := true; FloatColor.Start end; end; function TEditVisualLabel.GetLabelCaption: string; begin result := TextLabel.Text; end; function TEditVisualLabel.GetLabelFontColor: TAlphaColor; begin Result := FloatColor.StopValue; end; function TEditVisualLabel.GetSHow: TShowLabel; begin if TextLabel.Visible then Result := TShowLabel(0) else Result := TShowLabel(1); end; function TEditVisualLabel.GetStartFont: Single; begin Result := FloatSize.StartValue; end; function TEditVisualLabel.GetStartValue: Single; begin Result := FloatVErt.StartValue; end; function TEditVisualLabel.GetStopFont: Single; begin Result := FloatSize.StopValue; end; function TEditVisualLabel.GetStopValue: Single; begin Result := FloatVErt.StopValue; end; procedure TEditVisualLabel.SetLabelCaption(Value: string); begin TextLabel.Text := Value; end; procedure TEditVisualLabel.SetLabelFontColor(Value: TAlphaColor); begin FloatColor.StopValue :=value; end; procedure TEditVisualLabel.SetShow(Value: TShowLabel); begin if Value = TShowLabel(0) then TextLabel.Visible := true else TextLabel.Visible := False; end; procedure TEditVisualLabel.SetStartFont(Value: Single); begin FloatSize.StartValue := Value; TextLabel.TextSettings.Font.Size := Value; end; procedure TEditVisualLabel.SetStartValue(Value: Single); begin FloatVert.StartValue := Value; end; procedure TEditVisualLabel.SetStopFont(Value: Single); begin FloatSize.StopValue := Value; end; procedure TEditVisualLabel.SetStopValue(Value: Single); begin FloatVert.StopValue := Value; end; end.
-
От striker
Всем привет!
Я новичок в FMX.
Сталкиваюсь с проблемами различий с VCL.
Некоторые проблемы:
1) Текст в edit мышью невозможно выделить, выделение скачет.
Думаю связано с заточкой под тач, как починить и возможно ли - нигде не нашёл.
2) Покрасить грид (строчку) в зависимости от значения можно?
В VCL это делается OnDrawColumnCell
Спасибо!
-
От Rusland
Имеется форма с Edit, в котором набран IP-адрес 192.168.1.12
Если попробовать долгим тапом выделить весь текст (для копирования), то выделяется только какая-то одна цифра. Весь текст никак не выделить. Тоже самое будет, если вместо точек поставить любые другие знаки препинания или пробел. Как решить эту проблему?
-
От alex_gulich
всем привет. столкнулся с такой проблемой: при работе с edit'ом, если сей компонент находится достаточно низко, то клавиатура перекрывает его. как бы этот нюанс исправить? работаю в delphi 10 seatle. ах да, приложение на androide
-
От FreeOS
Я привык в VCL-е вставить некоторые данные через DBEdit.text например:
DBEdit1.text:='какая то обработанная строка';
ADOQuery1.Post;
А в FMX ничего не происходят то есть в БД не пишется, но если в запущенном программе прописать в edit с клавиатуры то все вставляется. Edit привязан через livebinding
-
От Rusland
На ListBox-e несколько Item-ов, на них поставил Edit-ы. Когда я пытаюсь редактировать нижние Edit-ы, то клавиатура перекрывает их и не видно что набираешь (в моем примере это Номер дома). Как это исправить?
И как сделать чтобы на клавиатуре вместо кнопки Enter была кнопка Готово, по нажатию на которую клава бы скрывалась?
-
От Schekhovtsov
Пытаюсь заменить символы, пробовал два способа, через цикл и обычный.
s: string; S:=InfoPanelEdit1.Text; while Pos('=',S)<>0 do begin Insert('+',S,Pos('=',S)); Delete(S,Pos('=',S),1) end; InfoPanelEdit1.Text:=S илиInfoPanelEdit1.Text := InfoPanelEdit1.Text.Replace('=','+'); В обоих случаях замена происходит лишь после ввода следующего символа. Т.е. я ввожу "=", он записывается в edit, и только после ввода следующего он заменяется на "+". Код кладу в OnChangeTracking. Можно как-то заменять одним действием, чтобы пользователь сразу видел "+"? -
От Vitaldj
Коллеги, понадобилось поменять фон в обычном edit, не смог этого сделать. Пишу мулюьтипратформенное приложение для windows, mac. Есть идеи?
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
Хочу в одном Edit иметь маску вида: 250.250.250.250
Числа и между ними точки. Какие варианты на FMX?
PS. На текущий момент решение вижу только в нескольких Edit-ах и Label-ах стоящих подряд, но как-то некрасиво.
Поделиться сообщением
Ссылка на сообщение