![]() |
|
|
#1
|
|||
|
|||
|
Уважаемые гуру, посоветуйте как?
переменная tel:='9109884668'; на форме EditMask с маской в формате +7(___)___-__-__ , как правильно вставить в EditMask переменную tel ,что то вроде EditMask.Text:=tel; направьте на путь истинный .. |
|
#2
|
|||
|
|||
|
Да, что-то не работает компонент как ожидаешь.
Вариант - самому применить маску и вставлять уже в маскированном виде. Простой вариант: Код:
function FormatPhoneNumber(Phone : String) : String;
var
I: Integer;
begin
if Length(Phone) <> 10 then
raise Exception.Create('Actual length is not equal to 10.');
for I := 1 to 10 do
if Not (Phone[i] in ['0'..'9']) then
raise Exception.CreateFmt('Character %d is not a number.',[i]);
Result := '+7(' + Copy(Phone,1,3) + ')'+Copy(Phone,4,3) + '-' + Copy(Phone,7,4);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tel : String;
begin
tel:='9109884668';
MaskEdit1.Text := FormatPhoneNumber(tel);
end;Последний раз редактировалось lmikle, 07.08.2024 в 23:35. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Filen (07.08.2024)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Спсибо дорогой, очень помог .. ![]() строку: Result := '+7(' + Copy(Phone,1,3) + ')'+Copy(Phone,4,3) + '-' + Copy(Phone,7,4); изменить на Result := '+7(' + Copy(Phone,1,3) + ')'+Copy(Phone,4,3) + '-' + Copy(Phone,5,4)+ '-' +Copy(Phone,8,4); все работает без проблем. Последний раз редактировалось Filen, 08.08.2024 в 07:59. |
|
#4
|
||||
|
||||
|
А что это за номер у вас такой из 14 цифр? У вас же в первоначальном коде десятизначный номер, а в финале он вдруг вырос. Для форматирования телефона лучше использовать функцию, которая позволяет менять формат представления номера, без изменения кода:
Код:
function PhoneFormat(Phone: String; Mask: String): String;
begin
Result := '';
var n := 0;
for var i := 1 to Length(Mask)
do if Mask[i] = 'd'
then begin
Inc(n);
if n > Length(Phone) then Exit;
Result := Result + Phone[n]
end
else Result := Result + Mask[i];
end;
...
Caption := PhoneFormat('9109884668', '+7(ddd)ddd-dd-dd') |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Filen (12.08.2024)
| ||
|
#5
|
|||
|
|||
|
Страдалец, да, наверное, доп. код добавил.
В принципе, тогда надо вообще городить огород с несколькими масками или вообще "умную" функцию писать, которая и код страны будет правильно подставлять в зависимости от переданного номера. Я просто пример дал как можно сделать... |
|
#6
|
|||
|
|||
|
И снова здравствуйте.
Такая вот закавыка с запросом: Код:
imT:='9108408844'
DataModule2.ADOQueryZapisTime.Close;
DataModule2.ADOQueryZapisTime.SQL.Clear;
DataModule2.ADOQueryZapisTime.SQL.Add('SELECT * FROM Tf24_ZapisPriemaTime WHERE tel=:imT');
DataModule2.ADOQueryZapisTime.Active:=True;lmikle: Пользуемся тегами для оформлеия кода результат пустая таблица, хотя данных номеров в базе с десяток, никак не въеду, что не так делаю. Поможите люди добрые кто чем может.. Последний раз редактировалось lmikle, 12.08.2024 в 07:33. |
|
#7
|
|||
|
|||
|
А кто за тебя будет значение параметра устанавливать?
Код:
imT:='9108408844'
DataModule2.ADOQueryZapisTime.Close;
DataModule2.ADOQueryZapisTime.SQL.Clear;
DataModule2.ADOQueryZapisTime.SQL.Add('SELECT * FROM Tf24_ZapisPriemaTime WHERE tel=:imT');
DataModule2.ADOQueryZapisTime.ParamByName('imT').AsString := imT;
DataModule2.ADOQueryZapisTime.Active:=True;Ну или сразу в запрос вставляй значегние, что бы с параметрами не заморачиваться: Код:
DataModule2.ADOQueryZapisTime.SQL.Add(Format('SELECT * FROM Tf24_ZapisPriemaTime WHERE tel=''%s''',[imT]));Как-то так. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Filen (14.08.2024)
| ||