• 0
Rusland

Реализовать свою маску в Edit

Вопросы

Хочу в одном Edit иметь маску вида: 250.250.250.250

Числа и между ними точки. Какие варианты на FMX?

 

PS. На текущий момент решение вижу только в нескольких Edit-ах и Label-ах стоящих подряд, но как-то некрасиво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 1

uses maskUtils

Edit1.Text :=  MaskDoFormatText('000.000.000.000;#0',Edit1.Text, #0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Это совсем не то что мне нужно :)

Мне бы хотелось в самом Edit уже видеть точки, чтобы пользователь мог вводить числа между этими точками (цифра в каждой ячейке не обязательно 3х значная... для примера ввод ip-адреса). В общем целый компонент городить надо. Но все равно спасибо.

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Это совсем не то что мне нужно :)

Мне бы хотелось в самом Edit уже видеть точки, чтобы пользователь мог вводить числа между этими точками (цифра в каждой ячейке не обязательно 3х значная... для примера ввод ip-адреса). В общем целый компонент городить надо. Но все равно спасибо.

как напишете такой обязательно поделитесь))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

как напишете такой обязательно поделитесь))

Не-не, это не ко мне )) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 Какие варианты на FMX?

 

PS. На текущий момент решение вижу только в нескольких Edit-ах и Label-ах стоящих подряд, но как-то некрасиво.

К примеру компонент TTMSFMXIPEdit реализован комбинацией TTMSFMXEdit и TLabel.

Т.е. чтоб смотрелось красиво можно разместить стилизованные безрамочные TEdit и TLabel внутри какого-нибудь контейнера (TRectangle, TEdit...).

Изменено пользователем enatechno

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От 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. Есть идеи?
    • От Axbor
      Создал форму, измениль свойство formstyle на popup. Добавил в форму edit. А при вызове этой формы не получается написать в edit. Как можно это исправить?
      В этом форме спрашивается имя пользователя, после ввода имени сразу откроется другая форма. Мне подходило бы что то типа inputbox но я хотел бы вид этого окна по своему настраивать. Что предложите?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу