Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.05.22;
Скачать: [xml.tar.bz2];

Вниз

переключение между TEdit   Найти похожие ветки 

 
SKIPtr ©   (2011-02-09 09:22) [0]

Драсте у меня несколько окон типа TEdit
мне нужно при нажатии на клавиатуре клавиш управления
курсор должен перемещаться по записаннаму в окне а при достижении края окна переходить в следующее окно
подскажите как это лучше реализовать
или дайте ссылку где есть пример этого


 
brother ©   (2011-02-09 09:35) [1]

> при нажатии на клавиатуре клавиш управления

те когда пользователь вводит значение и перемещается по едиту, ты его хочешь кинуть?

> а при достижении края окна переходить в следующее окно

край окна? оригинально...
теперь еще раз: понятно и лучше с картинками, пока - не понятно.


 
И. Павел ©   (2011-02-09 09:36) [2]

В обработчике OnKeyDown пропишите нужный код. Можно сделать общий KeyDown для всех эдитов, правда тут нужно быдет решать, на какой Edit переходить.

Вот почти все, что нужно знать ид Дельфи, чтобы решить эту задачу:
 Edit1.SetFocus - установить фокус на Edit1
 Edit1.SelStart - позиция курсора в Edit1
 length(Edit1.Text) - число символов в Edit1
 Edit1.OnKeyDown - событие возникает при нажатии клавиши в поле Edit1


 
И. Павел ©   (2011-02-09 09:37) [3]

> те когда пользователь вводит значение и перемещается по
> едиту, ты его хочешь кинуть?

Наверное, у пользователя кнопка tab отвалилась :) У меня на старой клавиатуре так было.


 
Dennis I. Komarov ©   (2011-02-09 09:38) [4]

А Tab (Alt+Tab) мелкомягкие для не крутых перцов придумали...
Ну что же, нужно обрабатывать OnKeyPress каждого "окна типа TEdit"


 
sniknik ©   (2011-02-09 09:39) [5]

> подскажите как это лучше реализовать
это лучше не реализовывать... нестандартное поведение только напрягает, а если еще нет какого никакого оправдания этому то еще и бесит.

> или дайте ссылку где есть пример этого
здесь точно есть - http://www.delphimaster.ru . частями. (как переходить, как узнавать "край")


 
И. Павел ©   (2011-02-09 09:40) [6]

> нужно обрабатывать OnKeyPress каждого "окна типа TEdit"

KeyPress на клавиши перемещения курсора не реагирует.


 
Dennis I. Komarov ©   (2011-02-09 09:45) [7]


> KeyPress на клавиши перемещения курсора не реагирует.

Ну и ладно, рядом же KeyDown... Суть не меняется...


 
MonoLife ©   (2011-02-09 09:50) [8]

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length((Sender as TEdit).Text)=(Sender as TEdit).MaxLength then
 Edit2.SetFocus;
end;
:))


 
MonoLife ©   (2011-02-09 10:02) [9]


> MonoLife ©   (09.02.11 09:50) [8]

не из той оперы и не в ту степь( чёй это я?..


 
Плохиш ©   (2011-02-09 10:05) [10]


> подскажите как это лучше реализовать

Надо нанять программиста

> или дайте ссылку где есть пример этого

www.google.com


 
Anatoly Podgoretsky ©   (2011-02-09 10:34) [11]

> sniknik  (09.02.2011 09:39:05)  [5]

Лишь бы не работать.


 
SKIPtr ©   (2011-02-09 11:27) [12]


> www.google.com

пытался думаю не могу правильно описать параметры поиска
выскакивают другие примеры


> Вот почти все, что нужно знать ид Дельфи, чтобы решить эту
> задачу:  Edit1.SetFocus - установить фокус на Edit1  Edit1.
> SelStart - позиция курсора в Edit1  length(Edit1.Text) -
>  число символов в Edit1  Edit1.OnKeyDown - событие возникает
> при нажатии клавиши в поле Edit1

у меня такая мысль была
хотел узнать может есть что по проще


> нестандартное поведение только напрягает, а если еще нет
> какого никакого оправдания этому то еще и бесит.

мне нужно чтоб в программе ввели ай пи адрес вот я между TEdit поставил точки
вот хочу упролстить процесс ввода


 
brother ©   (2011-02-09 11:29) [13]

> в программе ввели ай пи адрес вот я между TEdit поставил
> точки

причем тут тогда?:

> а при достижении края окна переходить в следующее окно


 
И. Павел ©   (2011-02-09 11:36) [14]

> у меня такая мысль была
> хотел узнать может есть что по проще

Куда уж проще. Можно даже автоматически искать Edit, на который нужно перейти. Думаю, строк в 50 уложиться можно.


> мне нужно чтоб в программе ввели ай пи адрес вот я между
> TEdit поставил точки
> вот хочу упролстить процесс ввода

TMaskEdit


 
clickmaker ©   (2011-02-09 11:39) [15]

> мне нужно чтоб в программе ввели ай пи адрес

MaskEdit
EditMask = !999.999.999.999;1;_


 
Leonid Troyanovsky ©   (2011-02-09 11:57) [16]


> И. Павел ©   (09.02.11 11:36) [14]

> который нужно перейти. Думаю, строк в 50 уложиться можно


uses
 comctrls, commctrl;

type

TIPEdit = class(TWinControl)
protected
 procedure CreateParams(var Params: TCreateParams); override;
 procedure WMGetDlgCode( var Message:TWMGetDlgCode); message WM_GETDLGCODE;
end;

procedure TIPEdit.CreateParams(var Params: TCreateParams);
begin
 InitCommonControl(ICC_INTERNET_CLASSES );
 inherited CreateParams(Params);
 CreateSubClass(Params, WC_IPADDRESS);
 Params.Style := Params.Style or WS_TABSTOP;
end;

procedure TIpEdit.WMGetDlgCode;
begin
  inherited;
  Message.Result := Message.result or DLGC_WANTARROWS; // and not DLGC_WANTTAB;
end;

var Edit1: TIPEdit;

procedure TForm1.FormCreate(Sender: TObject);
begin
 if not Assigned(Edit1) then begin
   Edit1 := TIPEdit.Create(Self);
 with Edit1 do
   begin
     Name := "Edit1";
     Parent := Self;
     Left := 24;
     Top := 16;
     Width := 121;
     Height := 21;
     Tabstop := True;
 end;
 SendMessage(Edit1.Handle,IPM_CLEARADDRESS,0,0);
 SendMessage(Edit1.Handle,IPM_SETADDRESS,0,MAKEIPADDRESS(127,0,0,1));
end;
end;

--
Regards, LVT.


 
Dennis I. Komarov ©   (2011-02-09 12:20) [17]


> Leonid Troyanovsky ©   (09.02.11 11:57) [16]

Это для взрослых... Такое низя показывать в "Начинающих"


 
SKIPtr ©   (2011-02-09 15:31) [18]

не когда не пользовался MaskEdit поэтому не знал
кажеться она это то что надо посмотрю как получиться
хотя в интернете о ней пишут
Я как-то попробовал его(MaskEdit) использовать, но ничего не добился - постоянные глюки и се такое...


 
Игорь Шевченко ©   (2011-02-09 16:09) [19]


> хотя в интернете о ней пишут


надо читать не интернеты, а справку


 
SKIPtr ©   (2011-02-10 21:51) [21]


> EditMask = !999.999.999.999;1;_

немножко не так она делает как хотелось
число с такой маской можно записать в таких вариантах
__2   _2_   2__
как методы обработки поведут себя если записать такой адрес
ну вот например в такой метод GetHostbyAddr

наверно прийдется использовать
Edit1.SetFocus
Edit1.SelStart


 
Anatoly Podgoretsky ©   (2011-02-11 12:28) [22]

Надо проще, два Эдита и позволить пользователю вводить, так как он хочет, а дело программиста принять это, проверить и если все ОК то использовать, иначе вернуть пользователю на доработку.


 
brother ©   (2011-02-11 18:56) [23]

[22] тогда не два а четыре, или о чем речь?


 
novai   (2011-02-11 18:57) [24]

все верно, ip адрес состоит из 4х октетов...


 
SKIPtr ©   (2011-02-11 23:35) [25]

вот примерно вот так

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (Key = VK_RIGHT) and (Edit1.SelStart = Length(Edit1.Text)) then
       Edit2.SetFocus
  end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.05.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
15-1296566174
oxffff
2011-02-01 16:16
2011.05.22
Есть интересная задача


9-1189098446
Kav
2007-09-06 21:07
2011.05.22
glUseProgramObjectARB(0) ; жуткие тормоза


1-1254471574
dmitry1208197320
2009-10-02 12:19
2011.05.22
Прокрутка веб-страницы


15-1297002098
aka
2011-02-06 17:21
2011.05.22
Delphi & Flash


15-1297078540
Bat-an
2011-02-07 14:35
2011.05.22
Надо вызвать из батника две программы одновременно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский