|
05.08.2008, 16:11 | #1 |
Участник
|
Как получить выделенный текст из StringEdit
У элемента управления StringEdit есть метод getSelection, который возвращает индексы начального и конечного символа выделенного текста. Сначала сделал так:
X++: int p, n;
[p,n] = memo.getSelection();
info(substr(memo.text(),p+1, n-p)); Пришлось извратиться следующим образом: X++: int p, n, c1,c2; [p,n] = memo.getSelection(); c1 = charcount(substr(memo.text(),1,p),'\n'); c2 = charcount(substr(memo.text(),p,n-p),'\n'); info(substr(memo.text(),p+1-c1, n-p-c2)); X++: int charcount(str s, str c) { return strlen(strkeep(s,c)); } Подозреваю что, либо такой способ есть, так как от индексов, которые возвращает getSelection, в чистом виде пользы мало, либо это баг. |
|
05.08.2008, 16:35 | #2 |
MCTS
|
Как вариант - использовать TextBuffer - его substr считает переводы строки
|
|
05.08.2008, 17:24 | #3 |
Участник
|
Цитата:
X++: TextBuffer tb = new TextBuffer(); int p, n; ; [p,n] = memo.getSelection(); tb.setText(memo.text()); info(tb.subStr(p+1,n-p)); |
|
05.08.2008, 17:32 | #4 |
MCTS
|
Хе. Все понятно. Надо получать значение из StringEdit не методом text, а методом valuestr. Тогда и простой substr считает как надо (по-крайней мере у меня)
Разница становится заметна в таком примере: X++: info(StringEdit.text()); info(StringEdit.valueStr()); Последний раз редактировалось altap; 05.08.2008 в 17:36. |
|
05.08.2008, 18:00 | #5 |
MCTS
|
Разница - в том, что text не выводит символ возврата каретки (13)
|
|
|
За это сообщение автора поблагодарили: Lucky13 (2). |
06.08.2008, 09:18 | #6 |
Участник
|
|
|
06.08.2008, 15:57 | #7 |
Участник
|
Люди, ХЕЛП!!! УМИРАЮ!
Три часа над одной строчкой парюсь! Мне нужно в стринг едит записать что-либо при AutoDeclaration == No! Пытался так element.design().control(control::имя едита).valueStr('текст') но ругается! Помогите плз! |
|
06.08.2008, 18:25 | #8 |
Moderator
|
Цитата:
X++: FormRun formA; FormStringControl fcString; fcString = formA.design().controlName('myControlName'); fcString.pasteText('myStringValue', false); |
|
06.08.2008, 16:02 | #9 |
Участник
|
Попробуйте так
X++: FormStringControl ctrl;
;
ctrl = element.control(Control::controlName);
ctrl.text("value"); |
|
06.08.2008, 16:33 | #10 |
Участник
|
|
|
06.08.2008, 16:36 | #11 |
Участник
|
|
|
12.08.2008, 10:53 | #12 |
Участник
|
Подскажите плиз.
нужно к свойствам поля на форме попасть, делаю через element.design().controlName('Payment').allowedit(false); но он лочит закладку а не поле. так как есть закладка с таким названием. автодекларейшн у всех NO. |
|
12.08.2008, 10:58 | #13 |
MCTS
|
|
|
12.08.2008, 11:01 | #14 |
Участник
|
там есть page , group , и поле. и у всех одинаковое имя "Payment".
мне нужно поле. может я неправильно пытаюсь обратиться к нему? |
|
12.08.2008, 11:56 | #15 |
Moderator
|
Цитата:
X++: FormRun formRun; FormTabPageControl fcTabPage; FormGroupControl fcGroup; FormStringControl fcString; fcTabPage = formRun.design().controlName('Payment'); fcGroup = fcTabPage.controlNum(2); // допустим, группа - 2-й контрол на вкладке fcString = fcGroup.controlNum(3); // допустим, стрингэдит - 3-й контрол в группе fcString.pasteText('My String Value for Payment', false); |
|
|
За это сообщение автора поблагодарили: propeller (1). |
12.08.2008, 11:18 | #16 |
MCTS
|
Мне кажется - неправильно, что они одинаково называются... На мой взгляд правильнее было-бы назвать из PaymentPage, PaymentGroup и Payment соответственно.
Это Ваша форма? Если, да - то проще переименовать, если нет, то - что за форма? |
|
12.08.2008, 11:32 | #17 |
Участник
|
да , уже переименовал . спасибо
|
|
Теги |
stringedit, выделенный текст, ax3.0, ax4.0 |
|
|