Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Символ "=" в TValueListEditor


Автор: Burich-Caeser 2.10.2005, 20:19
Не получается поместить его в левый столбей. Все, что после него переносится в правую часть, а он сам не виден. Кто знает, в чем дело, помогите, пожалуйста.

Автор: Zero 2.10.2005, 22:01
Цитата(Burich @ 2.10.2005, 20:19)
Кто знает, в чем дело, помогите, пожалуйста.

Я знаю, ошибка в 17 строке, надо исправить...

Автор: p0s0l 2.10.2005, 23:38
Burich-Caeser, TValueListEditor хранит строки в виде "Ключ=Значение", поэтому очевидно, что Ключ не может содержать знак равенства...

Автор: Burich-Caeser 3.10.2005, 18:54
Цитата(Zero @ 2.10.2005, 22:01)
Я знаю, ошибка в 17 строке, надо исправить...

Можно подробней?


p0s0l Да, это я знаю, просто туеву хучу кода написал через этот компонент, а тут бяка обнаружилась... Может все-таки можно, как в html, чтобы записано одно, а отображалось другое...

Автор: p0s0l 3.10.2005, 21:48
Цитата(Burich @ 3.10.2005, 18:54)
Может все-таки можно, как в html, чтобы записано одно, а отображалось другое...
Можно. Как-нибудь в таком духе:
Код
procedure TForm1.ValueListEditor1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  s : string;
  p : integer;

begin // DefaultDrawing д.б. = True
  if (ARow <= 0) or (ACol > 0) then Exit;
  with Sender as TValueListEditor do
  begin
    s := vle1.Cells[ACol, ARow];
    repeat
      p := Pos('%', s);
      if p = 0 then Break;
      s[p] := Char(StrToInt('$'+Copy(s, p+1, 2)));
      Delete (s, p+1, 2);
    until False;
    Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, s);
  end;
end;
(в этом примере в левом столбце TValueListEditor'а все комбинации %xx заменяются при выводе на соответствующие символы, где xx - шестнадцатиричный код символа; например: "key%3D1" выведется как "key=1")

Автор: Burich-Caeser 4.10.2005, 18:59
p0s0l Спасибище!!! Я пока до такого сам доходить не умею smile

Правда, встает вопрос со знаком %. Но у меня идет обработка с именами файлов и папок, поэтому символ изменил на "*". Все работает. Спасибищ!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)