Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизРедактирование надписей в компоненте едит Найти похожие ветки
← →
Глеб (2012-05-05 16:58) [0]Добрый день!
Почти разобрался со своей проблемой, но есть одна просьба. Сейчас мой программный код добавляет/удаляет символы, но эти действия происходят в конце компонента, как сделать так что бы можно было в любой позиции это делать? Вот код
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var n : integer;
s : string;
begin
if Key=8 then begin
Edit1.Text:=copy(Edit1.Text,1, Length(Edit1.Text)-3);
Edit1.SelStart:=Length(Edit1.Text);
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
begin
if not (Key in mask) then Key:=#0
else begin
Edit1.Text:=Edit1.Text + " ,";
Edit1.SelStart:=Length(Edit1.Text) - 2;
end;
end;
← →
Cobalt © (2012-05-05 17:02) [1]Ты, мил человек, сначала опиши, что ты хочешь получить,
а то код активно скрывает смысл :-)
← →
Глеб (2012-05-05 17:23) [2]Все предельно просто. Мой программный код делает редактирование в конце строки едита, а мне нужно везде. т.е. если ты написал 1245 в моем едите и вспомнил, что пропустил 3 ты не сможешь вставить 3 туда куда нужно так как едет запихнет в конец 12453.
Вот мне и нужна помощь, что бы высчитывать позицию под курсором и проводить редактирование там где и положенно
← →
Медвежонок Пятачок © (2012-05-05 17:34) [3]это, я так понимаю, программа для пользователей с ампутированными пальцами рук?
← →
Юрий Зотов © (2012-05-05 17:37) [4]
> Глеб (05.05.12 17:23) [2]
См. свойства SelStart, SelLength, SelText.
Но возникает вопрос - а зачем нужен такой компонент? Не лучше ли использовать стандартный? Он такими закидонами не страдает.
← →
KilkennyCat © (2012-05-05 18:01) [5]
> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:
> Char);
> const
> mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
> begin
> if not (Key in mask) then Key:=#0
> else begin
> Edit1.Text:=Edit1.Text + " ,";
> Edit1.SelStart:=Length(Edit1.Text) - 2;
> end;
> end;
достаточно
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
begin
if not (Key in mask) then Key:=#0;
end;
и тогда не будет только в конец строки
← →
глеб (2012-05-05 18:25) [6]KilkennyCat так то понятно, что ты избавишь меня от проблемы частичного редактирования, но мне важна строка > Edit1.Text:=Edit1.Text + " ,"; Поэтому если у тебя есть дополнительные идеи прошу их озвучить.
← →
Медвежонок Пятачок © (2012-05-05 18:29) [7]лучше сосредоточится на обработке введенного, а не на введении символов за юзера. полезнее будет в сто раз.
← →
Медвежонок Пятачок © (2012-05-05 18:31) [8]if not (Key in mask) then Key:=#0;
бакспейс, дел, стрелки .....
← →
KilkennyCat © (2012-05-05 18:46) [9]
> важна строка > Edit1.Text:=Edit1.Text + " ,";
в процессе ввода строки, или потом, при обработке строки?
← →
Cobalt © (2012-05-05 19:01) [10]Глеб, абсолютносовершенно непонятно, как именно ты хочешь обрабатывать строку в конмпоненте.
Т.е. Ты говоришь "Я делать хочу"
ответ - дык, делай, никто не мешает.
Ты: я не только тут делать хочу, но и там делать хочу.
А что именно ты хочешь - дом строить, руду плавить, тачать сапоги или печь хлеб - ты упорно скрываешь.
Исходно какая задача?
← →
глеб (2012-05-05 19:32) [11]KilkennyCat и при вводе символов и при удалении.
Cobalt мне надо сделать так чтобы в эдит вводились только анг. буквы и цифры. При вводе буквы программу должна сама поставить пробел и запятую.
вот так с ,
При удалении нужно чтобы удалилась буква пробел и запятая.
Я смог этого достичь, но нужно проводить редактирование в позиции под курсором, а у меня только последние элементы редактируются
← →
Медвежонок Пятачок © (2012-05-05 19:35) [12]тебе же уже сказали. позиция курсора - это селстарт
← →
глеб (2012-05-05 19:42) [13]Медвежонок Пятачок так я не знаю, как его использовать чтобы он мне помог в решении проблемы
← →
Юрий Зотов © (2012-05-05 20:08) [14]
> глеб (05.05.12 19:42) [13]
А справки у Вас разве нет? Там по поводу SelStart все сказано.
← →
Медвежонок Пятачок © (2012-05-05 20:15) [15]кстати, позиция курсора ему в общем случае не поможет.
например введено:
a ,b ,23c ,
выделяем часть строки и нажимаем букву d
получаем:
d ,23c ,
что здесь надо удалить?
← →
Медвежонок Пятачок © (2012-05-05 20:21) [16]второй хитрый вопрос:
как вообще в предыдущем сценарии понять, что я что-то удалил?
я не нажимал ни дел, ни бэкспейс. Если бы выделение было не столь удачным, то постобработка потребовалась бы.
а ни дела ни бекспейса не было
← →
KilkennyCat © (2012-05-05 20:57) [17]ну, пока четкой формулировки задачи не видно - решения нет.
← →
Глеб (2012-05-05 21:20) [18]KilkennyCat я вам рассказал, что мне надо если что то не понятно давайте подробно объясню
Медвежонок Пятачок сожалею, но я не понял, что ты написал.
Давайте я вам повторю. Мне надо чтобы при вводе с клавиатуры анг. символа скажем "g" программа вела в эдит "g ," при удалении пользователь наживает один раз на бэкспейс ("key = 8" - код операции удаления), а программа удалит символ + пробел + запятую.
Я смог добиться этого, НО все эти действия происходят на конце записи эдита т.е. нельзя сфокусироваться на середине и удалить/добавить символ в центре. Весть процесс редактирования происходит на конце.
Поэтому я прошу мне помочь с редактором записи, что бы можно было
проводить операции под курсором мыши, а не в самой правой части.
вод код удаления:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var n : integer;
s : string;
begin
if Key=8 then begin
Edit1.Text:=copy(Edit1.Text,1, Length(Edit1.Text)-3);
Edit1.SelStart:=Length(Edit1.Text);
end;
end;
вот код добавления
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
begin
if not (Key in mask) then Key:=#0
else begin
Edit1.Text:=Edit1.Text + " ,";
Edit1.SelStart:=Length(Edit1.Text) - 2;
end;
end;
← →
KilkennyCat © (2012-05-05 21:39) [19]то есть у тебя любой алфавитно-цифровой символ должен заменяться комбинацией этот символ-пробел-запятая? и вся обработка таким макаром?
отследить все перемещения курсора, разрешая попадать лишь в места x * 3. удаление, выделение так же тройное.
← →
Глеб (2012-05-05 21:42) [20]если я тебе правильно понял, Константин, то ДА
← →
Глеб (2012-05-05 21:45) [21]KilkennyCat ты лучше в дельфи скопирую мой код, поставь эдит и два события
KeyPress и KeyDown все сразу станет понятнее.
← →
KilkennyCat © (2012-05-05 21:48) [22]ну дык напиши проверку selstart и sellength чтобы всегда выполнялось условие позиционирования. от стрелок и от мыши. и на удаление чтоб три символа сразу. и проверку буфера, если вставка разрешена.
← →
Глеб (2012-05-05 21:52) [23]KilkennyCat ох ёё я на дельфи 5 день работаю еще не очень грамотный в этом плане если мог бы сделать сам на форум не писал бы. Мне желательно получить переделанный код
← →
KilkennyCat © (2012-05-05 21:53) [24]в примитивном варианте ввод клавиши:
edit1.text := Insert(key + " ,", edit1.text, edit1.selstart);
← →
Глеб (2012-05-05 21:55) [25]KilkennyCat это на ввод клавиши, сейчас посмотрю в проекте, как оно работает
← →
Глеб (2012-05-05 22:01) [26][Hint] Unit3NactroikaCkanera.pas(276): Variable "s" is declared but never used in "TForm3.Edit1KeyDown"
[Hint] Unit3NactroikaCkanera.pas(275): Variable "n" is declared but never used in "TForm3.Edit1KeyDown"
теперь выводит такую ошибку, но понять не могу, как эта надпись edit1.text := Insert(key + " ,", edit1.text, edit1.selstart); притащила эти ошибки. Переменные n и s из другой процедуры и они локальные
← →
KilkennyCat © (2012-05-05 22:03) [27]а... ошибся я, подводит память.
примерно так надо:
var
s : string;
begin
s := edit1.text;
insert(key + " ,", s, edit1.text);
edit1.text := s;
key := #0;
end;
и скорее всего понадобится возвращать selstart в новую позицию.
← →
KilkennyCat © (2012-05-05 22:04) [28]тьфу, опять ошибся.
insert(key + " ,", s, edit1.selstart);
← →
Глеб (2012-05-05 22:09) [29]попытался ввести 1234567890, а вышло 0 , 9 , 8 , 7 , и т.д. все наоборот, но есть редактирование, а можно сделать так чтобы было как у меня только + редактирование)
← →
Глеб (2012-05-05 22:16) [30]KilkennyCat insert(key + " ,", s, edit1.selstart - Length(Edit1.Text)+ 1); так работает более корректно, но опять если с позиционироваться на центе записи 1 , 3, 4, и поставить 2 то получиться 1 , 3 , 4 , 2 , то уходит в право(
Как же еня это уже достало
← →
KilkennyCat © (2012-05-05 22:16) [31]можно, надо только разобраться, когда вообще изменяется selstart... и возможно, на onKeyUp придется вешать обработку. экспериментируй, и вообще, insert - это лишь вариант, возможны и другие решения. я бы, скорее всего, послал бы вдогонку эмуляцию нажатия клавиш пробела и запятую.
← →
Глеб (2012-05-05 22:17) [32]KilkennyCat да и я хочу послать, но мне нужно это условия заказа
← →
KilkennyCat © (2012-05-05 22:29) [33]частичное решение:
procedure TForm1.edit1KeyPress(Sender: TObject; var Key: Char);
begin
edit1.Tag := edit1.SelStart;
end;
procedure TForm1.edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
s : string;
begin
s := edit1.Text;
Insert(" ,", s, edit1.Tag + 2);
edit1.Text := s;
edit1.selstart := edit1.Tag + 3;
edit1.SelLength := 0;
end;
← →
Глеб (2012-05-05 22:39) [34]procedure TForm3.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var n : integer;
s : string;
begin
if Key=8 or 46 then begin
S:=Edit1.Text;
n:=Edit1.SelStart;
Edit1.Text:=copy(S, 1, n-3)+copy(S, n+1, Length(S)-n);
Edit1.SetFocus;
Edit1.SelStart:=n-1;
end;
end;
end.
процедура удаления символа + пробел + запятая из любой позиции под курсором мыши
Фух с этим справился
← →
Глеб (2012-05-05 22:40) [35]KilkennyCat сейчас посмотрю твой код на добавление
← →
Глеб (2012-05-05 22:52) [36]KilkennyCat хм твой код действительно помогает, но есть нюанс. если скажем набрать 1245, то программа ответит 1 ,2 ,4 ,5 , вроде хорошо и даже можно вставить 3 между 2 и 4 программа ответит 1 ,2 ,3 ,4 ,5 , редактирование есть в любой позиции, НО если поставить курсор мыши в компоненте эдит сразу после цифры 2 то получиться 1 , 22, ,3 ,4 ,5 , надо сделать проверку на область добавления
Сам не знаю как
← →
MBo © (2012-05-05 23:01) [37]Простой способ не подойдет?
В едит вводишь только нужные символы, а обработанный текст отображается отдельно
← →
KilkennyCat © (2012-05-05 23:04) [38]я же говорил, необходим контроль selstart. как только он захочет поменяться, проверяй и разрешай изменение если только в правильное место хочет.
и еще есть проблема мультиповтора при долгом нажатии.
← →
Глеб (2012-05-05 23:06) [39]MBo нет, мне надо именно так как я описывал выше. Хорошо, что сделал удаление работает классно, сам доволен. Посмотри, как работает может, где ошибся и не вижу.
procedure TForm3.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var n : integer;
s : string;
begin
if (Key=8) or (Key=46) then begin
S:=Edit1.Text;
n:=Edit1.SelStart;
Edit1.Text:=copy(S, 1, n-3)+copy(S, n+1, Length(S)-n);
Edit1.SetFocus;
Edit1.SelStart:=n-1;
end;
end;
end.
А вот с добавлением пока косяки идут
← →
Глеб (2012-05-05 23:12) [40]KilkennyCat спасибо за совет буду думать, если сам не додумаю, можно к тебе обратиться
← →
Медвежонок Пятачок © (2012-05-05 23:36) [41]if Key=8 or 46 then begin
а теперь снова:
будут случаи, когда кей не равен ни тому ни другому, но символы из едита будут удаляться. Как в моем примере выше.
← →
Глеб (2012-05-05 23:42) [42]Медвежонок Пятачок не совсем понял что ты хотел сказать в этом сообщении и в сообщении на которые ссылаешь,но удаление работает у меня корректно, происходит только по дел и бэкспей. Если ты смог удалить символ в моей программе как то иначе прошу сказать. Код программы есть (39сообщение) - прошу протестирую
← →
Медвежонок Пятачок © (2012-05-05 23:48) [43]выдели кусок текста в своем эдите.
затем не снимая выделения нажми букву "x"
← →
Глеб (2012-05-05 23:51) [44]Медвежонок Пятачок Все отлично, рекомендую протестировать самому
← →
Inovet © (2012-05-06 08:24) [45]> [29] Глеб (05.05.12 22:09)
> попытался ввести 1234567890, а вышло 0 , 9 , 8 , 7 ,
Ты это и просил, после уточнения ещё и подтвердил.
← →
Глеб (2012-05-06 17:05) [46]Inovet значит мы друг друга не поняли. Мне надо: если нажать на клавиши от 0 до 9, A до Z, a до z. То программа должна отвечать в эдите (символ ввода + пробел + запятая). Ввод символа должен быть везде и в начале записи, и в середине, и в конце. При этом нужна проверка куда идет запись чтобы не было ситуации когда (22 ,, - это описано в сообщении №36)
Я смог добиться полного редактирование, но идет проблема, описанная в сообщении №36
Поэтому если кто знает решение, прошу помочь
← →
turbouser © (2012-05-06 17:33) [47]
> Глеб (06.05.12 17:05) [46]
Это решается не так уж и сложно. У тебя есть позиция каретки в едите, есть код символа, есть имеющийся текст в едите. Остальное дело техники.
Исходя из этих данных попробуй на листочке нарисовать последовательность действий.
← →
Глеб (2012-05-06 17:42) [48]turbouser у меня уже голова болит от этого эдита, если знаешь, как помочь то лучше напиши мне кодом. Я уже несколько дней чернила извожу на алгоритмы
← →
brother © (2012-05-06 17:58) [49]> у меня уже голова болит от этого эдита
это только начало...
> напиши мне кодом
...
> Я уже несколько дней чернила извожу на алгоритмы
красивое словцо?
← →
Глеб (2012-05-06 18:09) [50]brother мне не понятно твоё сообщение
← →
turbouser © (2012-05-06 18:09) [51]
> Глеб (06.05.12 17:42) [48]
вот смотри:
есть текст в едите. есть позиция, куда юзер вставляет символ. есть правила, которым текст должен соответствовать - "цифра_пробел_запятая" так?
вот как пример. незнаю, неоптимально скорее всего, ноconst EditText = "%s ,";
var Apos,i:integer;
LeftStr, RightStr:string;
begin
if (key in (символы тут) begin
Apos:= Edit.SelStart;
if APos>0 {не помню, с 0 там начинается или с 1 ? допустим что с 0}
begin
LeftStr := Copy(Edit.Text, Apos-3,3);
if Length(LeftStr)>2
begin
If LeftStr[1] in (символы тут) {или CharInSet - зависит от версии. в прочем, идея должна быть понятна}
Edit.Text := Edit.Text+Format(EditText ,[key]) else
if LeftStr[1] = " "
Edit.Text := Edit.Text+","+Format(EditText ,[key]) else
Edit.Text := Edit.Text+" ,"+Key;
end
end
else
edit.text := Format(EditText ,[key]);
end;
не проверял. пейсал от руки :) наверняка есть ошибки.
← →
Глеб (2012-05-06 18:19) [52]turbouser спасибо за помощь, меня сроки поджимают, программа использует asm вставки - ими занимаюсь, уже на этот эдит забил - сейчас поковыряюсь в твоем коде
← →
Глеб (2012-05-06 18:21) [53]turbouser ты каком событии писал keypress?
← →
Глеб (2012-05-06 18:46) [54]turbouser я отредактировал твой код и избавил его от ошибок, но рез. не тот, что мне нужен. Посмотри, может я напортачил в нем, но думаю все важное сохранил. Результат получается след:
Если набрать "123" то программа отвечает "3211 ,2 ,3 ," она показывает твои нажатия + то что должно быть. Если попытаться вставить доп символ в строку то получается вообще каша(описать сложно).
Лучше протестируй свой код, отредактированный мною(он внизу). Так как мне в твоем тяжело разобраться и сделать какие либо корректировки.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
EditText = "%s ,";
mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
var
Apos, i: integer;
LeftStr, RightStr: string;
begin
if (key in mask) then begin
Apos:= Edit1.SelStart;
if APos>0 then
begin
LeftStr := Copy(Edit1.Text, Apos-3,3);
if Length(LeftStr)>2 then
begin
If LeftStr[1] in (mask) then
Edit1.Text := Edit1.Text+Format(EditText ,[key]) else
if LeftStr[1] = " " then
Edit1.Text := Edit1.Text+","+Format(EditText ,[key]) else
Edit1.Text := Edit1.Text+" ,"+Key;
end
end
else
edit1.text := Format(EditText ,[key]);
end;
end;
← →
turbouser © (2012-05-06 18:57) [55]Key:=#0; {надо добавить.}
end;
end;
я думал, ты попытаешься разобраться.
← →
KilkennyCat © (2012-05-06 19:01) [56]он же написал, что некогда разбираться, asm отвлекает.
← →
Inovet © (2012-05-06 19:14) [57]> [46] Глеб (06.05.12 17:05)
> Inovet значит мы друг друга не поняли.
Возможно, но только формально.:)
← →
Inovet © (2012-05-06 19:22) [58]> [56] KilkennyCat © (06.05.12 19:01)
> asm отвлекает
Есть подозрение на суть притчи о XYZ (у кого есть ссылка - киньте). Подозрение уже было озвучено
> [37] MBo © (05.05.12 23:01)
> Простой способ не подойдет?
> В едит вводишь только нужные символы, а обработанный текст отображается отдельно
← →
Глеб (2012-05-06 20:07) [59]turbouser вот теперь я тебя не понял, куда надо добавить "Key:=#0;". Когда пишешь программы на ассемблере, а потом на дельфях невозможно соображать корректно, поэтому я и не стал досконально разбираться в твоем коде, а только посмотрел поверхностно - без обид, просто действительно ситуация у меня трудная, но очень нужна помощь с этим эдитом.
Я переделал код, на своё усмотрение. Так надо было? Если да, то плохо - он не добавляет новые символы, а только изменяет те, что на первых позициях.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
EditText = "%s ,";
mask : set of char =["0".."9" , "a".."z" , "A".."Z"];
var
Apos, i: integer;
LeftStr, RightStr: string;
begin
if (key in mask) then begin
Apos:= Edit1.SelStart;
if APos>0 then
begin
LeftStr := Copy(Edit1.Text, Apos-3,3);
if Length(LeftStr)>2 then
begin
If LeftStr[1] in (mask) then
Edit1.Text := Edit1.Text+Format(EditText ,[key]) else
if LeftStr[1] = " " then
Edit1.Text := Edit1.Text+","+Format(EditText ,[key]) else
Edit1.Text := Edit1.Text+" ,"+Key;
end
end
else
edit1.text := Format(EditText ,[key]);
Key:=#0;
end;
end;
← →
Amoeba_ (2012-05-06 22:25) [60]
> Есть подозрение на суть притчи о XYZ (у кого есть ссылка
> - киньте)
>
Здесь: http://www.gunsmoker.ru/2008/10/x-y-z.html
← →
Глеб (2012-05-06 22:37) [61]Amoeba_ только зря потратил время на это произведение. Лучше подсказал, как улучшить код до нужного результата. Удаление уже сделано мною отлично, а вот с вводом беда
← →
turbouser © (2012-05-07 00:02) [62]
> Глеб (06.05.12 20:07) [59]
Глеб, я намекнул в какую сторону копать. У меня нет дома дельфей, так что проверить и ты пы - не могу. В голове тоже не все так гладко :)
Если тебе очень надо - стоит подогнать то что тебе предлагали. Напильником обработать и все. Врятли кто-то готовое решение в выходные тебе подгонит. Хотя весьма вероятно. Вести себя надо только адекватно ;)
← →
Глеб (2012-05-07 00:22) [63]turbouser ладно, я пока другими вещами занимаюсь . Адекватно - то намекнул на мой бзик с вводом?
← →
Германн © (2012-05-07 01:32) [64]
> но мне нужно это условия заказа
"Условия заказа" в студию. А то пока действительно очень похоже на XYZ.
← →
MsGuns © (2012-05-07 10:39) [65]Нифига у Глеба не получится потому что никто из "мастеров" не умеет свечку держать :)
← →
Глеб (2012-05-07 13:05) [66]MsGuns все шутим?) эх до 9 мая мне надо этот эдит сделать
← →
Amoeba_ (2012-05-07 13:39) [67]Может автору вопроса все же стоит последовать этим разумным советам
> Медвежонок Пятачок © (05.05.12 18:29) [7]
>
> лучше сосредоточится на обработке введенного, а не на введении
> символов за юзера. полезнее будет в сто раз.
>
> MBo © (05.05.12 23:01) [37]
>
> Простой способ не подойдет?
> В едит вводишь только нужные символы, а обработанный текст
> отображается отдельно
и прекратить грызть кактус?
← →
Глеб (2012-05-07 14:59) [68]Amoeba_ эх если всегда отступать от намеченных целей, то не чего хорошего не будет. Я сделаю так как мне нужно с помощью этого форума или другого.
← →
Inovet © (2012-05-07 15:13) [69]> [68] Глеб (07.05.12 14:59)
Цели бывают пустые - обман, иллюзия в собственном сознании, а сил и времени для их достижени можно много потратить, спрашивая на этом и других форумах о Y, когда надо X, которое легко и естественно решается через Z, а не через Ж.
← →
Глеб (2012-05-07 15:18) [70]Inovet ты знаешь команду, которая переводит символы из малого реестра в большой?
← →
Inovet © (2012-05-07 15:26) [71]> [70] Глеб (07.05.12 15:18)
Команды разные бывают, которые переводят и разводят, но чаще из большого в малое. В Делфи такой команды не знаю, но знаю несколько функций для работы со строками и символами, которые могут помочь в этом вопросе.
← →
Глеб (2012-05-07 15:27) [72]Inovet мне надо символы вводимые в эдит переводить в заглавный реестр
← →
Глеб (2012-05-07 15:43) [73]функция AnsiUpperCase(const S: String): String
Возвращает строку S, преобразованную к верхнему регистру. - сам нашел
← →
Inovet © (2012-05-07 15:47) [74]> [73] Глеб (07.05.12 15:43)
> сам нашел
Прогресс, однако! "Кто ищет, тот всегда найдёт."
← →
MsGuns © (2012-05-07 16:15) [75]>MsGuns все шутим?)
А что еще делать если человек копает держа лопату черенком вниз, а когда все ему советуют взять ее как надо, говорит: "Я сделаю так как мне нужно с помощью этого форума или другого".
← →
Глеб (2012-05-08 13:41) [76]Вот господа, решение проблем с добавлением и удалением записи. По секрету, эту притчу придумал человек, которые иногда сам не знает ответов на вопросы, но признаться в этом ударит по его Супер-Эго поэтому на помощь приходи творческая фантазия. Надо не сказки писать и код
function Position: Integer;
begin
Result:=(Form3.Edit1.SelStart div 3);
end;
procedure Adding(Key: Char);
var
i, n: Integer;
begin
n:=Position;
List.Insert(n, Key+" ,");
Form3.Edit1.Text:="";
with Form3.Edit1 do for i:=0 to List.Count-1 do Text:=Text+List[i];
Form3.Edit1.SelStart:=(n+1)*3;
end;
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Legal=["0".."9", "A".."Z", "a".."z"];
begin
if Key in Legal then Adding(Key);
Key:=#0;
end;
procedure Removing;
var
i, n: Integer;
begin
n:=Position;
List.Delete(n-1);
Form3.Edit1.Text:="";
with Form3.Edit1 do for i:=0 to List.Count-1 do Text:=Text+List[i];
Form3.Edit1.SelStart:=(n-1)*3;
end;
procedure TForm3.Edit1KeyUp(Sender: TObject; var Key: Word ;
Shift: TShiftState);
const
BackSpace=8;
Del=46;
begin
if Key=37 then Edit1.SelStart:=Edit1.SelStart-2;
if Key=39 then Edit1.SelStart:=Edit1.SelStart+2;
if ((Key=BackSpace)or(Key=Del)) then Removing;
end;
если найдете изъян в коде прошу сделать коменты
← →
Inovet © (2012-05-08 13:49) [77]> [76] Глеб (08.05.12 13:41)
> Надо не сказки писать и код
Со временем, надеюсь, ты поймёшь о чём там речь.
← →
MsGuns © (2012-05-08 14:34) [78]Приведенный код - яркий пример как надо чесать за левым ухом правой пяткой.
Просто совет - пока не научитесь элементарному, не стОит выкладывать его где-либо в Сети и уж тем более пытаться хвастаться им.
Просто это очень напоминает малыша-годовалка, наделавшего в люлю и торжественно показывающего свое "произведение" всем окружающим. Мамашка (особенно впервые которая), конечно, в восторге, а вот гостей слегка подташнивает :)
← →
KilkennyCat © (2012-05-08 14:40) [79]как минимум, некрасивый код.
> procedure Removing;
> var
> i, n: Integer;
> begin
> n:=Position;
> List.Delete(n-1);
> Form3.Edit1.Text:="";
> with Form3.Edit1 do for i:=0 to List.Count-1 do Text:=Text+List[i];
>
> Form3.Edit1.SelStart:=(n-1)*3;
> end;
procedure Removing;
var
i, n: Integer;
begin
n:=Position;
List.Delete(n-1);
with Form3.Edit1 do begin
Text:="";
for i:=0 to List.Count-1 do Text:=Text+List[i];
SelStart:=(n-1)*3;
end;
end;
кроме того, он просто не полностью рабочий, еще один вариант, требующий доработки.
Так что, бегом на другой форум, напиши это.
а про притчу я не понял.
← →
KilkennyCat © (2012-05-08 14:42) [80]
> MsGuns © (08.05.12 14:34) [78]
да это вряд ли его код, он еще на других форумах тусуется с этой же проблемой, небось, решил вариант "жулик и два шахматиста" разыграть.
← →
Глеб (2012-05-08 16:25) [81]MsGuns я не говорил, что это мой код и я не хвастаюсь, здесь я его выложил для того, чтобы если такая проблема повториться у другого человека он мог его у меня посмотреть и доделать под себя. Очень жаль, что у тебя в голове такие пошлые мысли - это только тебя характеризует
KilkennyCat я тебя не чем не обязан след. нет не одного мотива на обман, причину выкладки кода читай выше
← →
KilkennyCat © (2012-05-08 16:39) [82]
> причину выкладки кода читай выше
у меня нет такой травы, чтоб понять твое описание причины.
Глеб, у тебя с русским языком проблемы: после обращения к кому-либо ставится запятая, "я тебе ничем не обязан, след. нет ни одного мотива для обмана"
← →
KilkennyCat © (2012-05-08 16:41) [83]И логика классная: если мне кто-то чем-то обязан, значит, он может обманывать... Добро пожаловать в этот удивительный мир, полный любви и милосердия!
← →
Inovet © (2012-05-08 17:40) [84]> [82] KilkennyCat © (08.05.12 16:39)
> Глеб, у тебя с русским языком проблемы
Автору повторить "не" и "ни":
http://www.orfo.ru/Tutorial/Html/Test_NeNi1.htm
← →
MsGuns © (2012-05-09 16:58) [85]>Глеб (08.05.12 16:25) [81]
>MsGuns я не говорил, что это мой код и я не хвастаюсь, здесь я его выложил для того, чтобы если такая проблема повториться у другого человека он мог его у меня посмотреть и доделать под себя.
Даже если какашка не твоя, давать ее гордо другим понюхать - действо не менее пошлое :)
>Очень жаль, что у тебя в голове такие пошлые мысли - это только тебя характеризует
Какие мысли у меня в голове - это мне одному известно, и то не всегда :)
В посте нет ни одного слова против кого-то конкретного, а просто констатация очевидного факта в тему.
Если эта самая констатация вызывает у них такую реакцию, то это их уже определенно характеризует :)
ЗЫ. На обиженных воду возят (древняя руспословица)
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.7 MB
Время: 0.108 c