Перейти к содержанию
  • 0
golomeen

TreeView переупорядочивает элементы при смене Text, XE8

Вопросы

Поэкспериментировал и нашел простейший случай - узел и в нем два листа.

Алгоритм следующий (упрощенно)

каждый лист показывает пару key=value

при клике в узел остается только key= и показывается листвью с выбором value. Затем мы получаем грубо key=new value (хотя не обязательно)

После такой операции вы обязательно получаем то что 2 листа меняются местами

 

С узлом ничего не происходит ни программно ни фактически

 

В более сложных случаях тоже шевеление наблюдается, но я его не изучал подробно

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

Ответы на этот вопрос пока отсутствуют

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От x11
      Может кому пригодится.
      Немножко запутался я, т.к. в FMX почти любая визуальная компонента может быть контейнером для другой компоненты.
       
      Рабочий код.
      function GetPathFromNode(AItem: TTreeViewItem): String; begin if AItem = nil then exit('ничего не выбрано'); while Assigned(AItem) and (AItem is TTreeViewItem) do begin Result := AItem.Text + '/' + Result; AItem := TTreeViewItem(AItem.ParentItem); end; Delete(Result, Length(Result), 1); end;  
      проблема была у меня AItem.Parent
      а правильно - AItem.ParentItem
    • От Jeysi Z
      Здравствуйте, хотел поинтересоваться, как писать что-то в процедуре render на context?
    • От Aptyp
      На моём Samsung Note 5 вокруг букв проглядываются линии. Причём пробовал 3 различных разрешения экрана, ничего не меняется. У друга на Xiaomi Redmi 4x такого не наблюдается.
      Что это может быть?
       


    • От Вячеслав Холод
      Проблема такая, создаю динамически Label и нужно выровнять текст внутри по центру самой метки. 
      Пробовал: 
          with LabelG do
          begin
            StyledSettings := [];
            LabelG.TextSettings.Font.Family:='Century Gothic';
            LabelG.TextSettings.Font.Size:=14;
            LabelG.TextSettings.FontColor:=TAlphaColorRec.Aliceblue;
       -->  LabelG.TextSettings.HorzAlign.taCenter; (И :=taCenter и что только не пробовал)
          end;
       
      Помогите пожалуйста.
    • От Евгений Корепов
      Обнаружил очередной глюк Tokyo - сломали Text в Android. А именно порушили раскраску символов Юникода.
      Воспроизводится просто :
      procedure TFormMain.FormCreate(Sender: TObject); Var Text1: TText; begin Text1:=TText.Create(Self); Text1.Text:='|' + Char($2713) + '|'; Text1.Font.Size:=48; Text1.Color:=TAlphaColorRec.Red; Text1.Align:=TAlignLayout.Client; Text1.TextSettings.HorzAlign:=TTextAlign.Center; Text1.TextSettings.VertAlign:=TTextAlign.Center; FormMain.AddObject(Text1); end; На первом скриншоте этот код выполнен в Berlin, все выглядит как задуманно. На втором скриншоте этот же код в Tokyo.


    • От x11
      Почему этот цикл "видит" только первый уровень дерева?
      Тогда как правильно организовать поиск нужного TreeViewItem`а по всем узлам, по всему дереву?
       
      function TfmTree.FindItemByIndex(id_parent: Integer): TTreeViewItem; var i: Integer; begin Result := nil; for i:= 0 to Pred(TreeView1.Count) do if TreeView1.Items[i].Tag = id_parent then begin Result := TreeView1.Items[i]; break; end; end;  
    • От notricky
      На Android код, который работает исправно на Win  вызывает ошибку "CalledFromWrongThreadException: Only the original thread that created a view hierarcy can touch its views" 
      Смысл таков, что я пытаюсь показать форму из треда, у которой BorderStyle=none (роли это не играет).
      Решение в Андроиде заключается в том, чтобы пускать через  runOnUiThread  (то есть выполнять интерфейсные штуки в главном потоке). Как я понимаю, в firemonkey эту фичу должен выполнять Synchronize().
      Тем не менее, ошибка возникает.
      А при запуске в режиме дебага на андроид девайсе событие кнопки вообще не срабатывает иногда. А если срабатывает, то возникает описанное выше исключение.
      Я собрал тестовый пример и в нем не сразу видна ошибка, тогда как получил я ее на рабочем проекте.
      Цель: показать бизибокс на время бекграундных действий. Этот бизибокс у меня сначала был просто на каждой форме и я интерфейсно его вызывал, но теперь решил сделать отедльной формой (как и тоаст), но почему так происходит я не понял. Вы что скажете?
       
      unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TWorkThread = class(TThread) public procedure Execute; override; end; var Form1: TForm1; implementation {$R *.fmx} uses unit2; procedure TForm1.Button1Click(Sender: TObject); var t: TWorkThread; begin t := TWorkThread.Create(True); t.FreeOnTerminate := true; t.Start; end; { TWorkThread } procedure TWorkThread.Execute; begin inherited; Self.Synchronize(procedure begin Form2.Show; Form2.Top := Form1.Top; Form2.Left := Form1.Left; Form2.BringToFront; end); Terminate; end; end.  
    • От RubenKamp
      Добрый день.
      Столкнулся с такой проблемой, есть приложение которое делает парсинг сайта и собирает нужные ссылки в ListBox а из ListBox-а потом ссылку открывает браузер, с ListBox-ом проблем не было (за исключением скорости работы) делал так:
      procedure TForm16.ListBox1Click(Sender: TObject); begin WebBrowser1.URL:=listbox1.Selected.Text; end; решил вместо ListBox использовать ListView собираю данные в ListView но не знаю как передать браузеру(
    • От notricky
      Почему-то не возможно использовать константы цветов, заданные в TAlphaColorRec, TColorRec.
      Они есть, но при присвоении, например, TextSettings.Font.Color = TColorRec.cRed или TAlphaColorRec.Red ничего не происходит. Нужно явно задавать $FFFF0000.
      Если так у кого-то ещё, напишите.
      А если что-то можно с этим сделать - тоже
    • От notricky
      Почему-то код, исправно работающий для WIN, не работает на ANDROID.
      procedure AssignEventToComponent(C: TComponent; MethodName: String; const Evt: TNotifyEvent; OnlyIfNil: boolean = true); var M: TMethod; begin M := GetMethodProp(C,MethodName); if not OnlyIfNil or (M.Code = nil) then begin TNotifyEvent(M) := Evt; SetMethodProp(C,MethodName,M); end; end; Есть какие-то особенности работы TMethod для ANDROID?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...