david_yusupov

Пользователи
  • Публикации

    39
  • Зарегистрирован

  • Посещение

О david_yusupov

  • Звание
    Продвинутый пользователь

Посетители профиля

419 просмотров профиля
  1. Как сделать TreeView — прозрачный фон, так что бы видны Item?
  2. Это все и так понятно... мда. Спасибо.
  3. Вопрос очень прост, как убить запущенный поток не дожидаясь его завершение. Пример: procedure TBufferThread.Execute; begin while not Self.Terminated do begin Sleep(10000); end; end; Используя ReportMemoryLeaksOnShutdown показывает, что поток жив, после закрытие программы? PS Поток так же жив после вызова процедуры TThread.Terminate (После того как заглянул вовнутрь понял почему, и поэтому возник вопрос, как убить поток?)
  4. Было написано костыль, для быстрого решение... то так идея с отдельным потом, мне нравится. Так как нет других решений. Прилегаю файл, как и просили. procedure TBlocksFrame.SetInitializationLattice; var i, j: Integer; xRectangle: TLatticeRectangle; xHeight, xWidth: Single; begin xHeight := Self.Height/ROW_COUNT_SIZE; xWidth := Self.Width/COL_COUNT_SIZE; if (xHeight > 0) and (xWidth > 0) then begin for i := 0 to ROW_COUNT_SIZE - 1 do for j := 0 to COL_COUNT_SIZE - 1 do begin xRectangle := TLatticeRectangle.Create(Self); SetPostionRectangle(xRectangle, j * xWidth + 1.25, i * xHeight + 1.25, xHeight - 2.5, xWidth - 2.5); xRectangle.Row := i; xRectangle.Col := j; xRectangle.Parent := Self; xRectangle.OnEnter := RectangleOnEnter; xRectangle.OnMouseDown := RectangleOnMouseDown; xRectangle.OnMouseMove := RectangleOnMouseMove; xRectangle.OnMouseUp := RectangleOnMouseUp; FLatticeles.Add(xRectangle); end; end; end; procedure TBlocksFrame.SetUpDatesLattice; var i, j, xIndex: Integer; xLattice: TLatticeRectangle; xHeight, xWidth: Single; begin xHeight := Self.Height/ROW_COUNT_SIZE; xWidth := Self.Width/COL_COUNT_SIZE; if (xHeight > 0) and (xWidth > 0) then begin for i := 0 to ROW_COUNT_SIZE - 1 do for j := 0 to COL_COUNT_SIZE - 1 do begin xIndex := i * COL_COUNT_SIZE + j; xLattice := FLatticeles[xIndex]; if Assigned(xLattice) then begin SetPostionRectangle(xLattice, j * xWidth + 1.25, i * xHeight + 1.25, xHeight - 2.5, xWidth - 2.5); end; end; end; end; // сейчас так procedure TBlocksFrame.TimerTimer(Sender: TObject); begin if (FSelfHeight = 0) and (FSelfWidth = 0) then begin FSelfHeight := Self.Height; FSelfWidth := Self.Width; Self.SetInitializationLattice; end else begin if (FSelfHeight <> Self.Height) or (FSelfWidth <> Self.Width) then begin FSelfHeight := Self.Height; FSelfWidth := Self.Width; if FLatticeles.Count = 0 then Self.SetInitializationLattice else begin SetUpDatesLattice; SetUpDatesBlock; end; end; end; end; // было так procedure TBlocksFrame.Resize; begin inherited Resize; if (FSelfHeight = 0) and (FSelfWidth = 0) then begin FSelfHeight := Self.Height; FSelfWidth := Self.Width; Self.SetInitializationLattice; end else begin if (FSelfHeight <> Self.Height) or (FSelfWidth <> Self.Width) then begin FSelfHeight := Self.Height; FSelfWidth := Self.Width; if FLatticeles.Count = 0 then Self.SetInitializationLattice else begin SetUpDatesLattice; SetUpDatesBlock; end; end; end; end; block.zip
  5. Ясно спасибо. Значит будем использовать отдельный поток... а так пока использую костыль. поставил Timer, с проверкой измене размеров.
  6. Cтолкнулся с не большой проблемой. Разрабатываю фрейм, использованием событие OnResize. Суть проблемы создаем динамически очень много объектов, и в зависимости от размера фрейма, обсчитываем положение и обновление размеры обетов. Приводит к зависанию всего приложения.
  7. Не могу знать во время или нет... это библиотека работает на MAC OS, на андройде не проверял. http://www.ararat.cz/synapse/doku.php/download
  8. Точнее, как работает наследование. TNodeItem = class(TTreeViewItem) public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; TNodeItem2 = class(TNodeItem) public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; реализация { TNodeItem } constructor TNodeItem.Create(AOwner: TComponent); begin inherited Create(AOwner); end; destructor TNodeItem.Destroy; begin inherited; end; { TNodeItem2 } constructor TNodeItem2.Create(AOwner: TComponent); begin inherited Create(AOwner); end; destructor TNodeItem2.Destroy; begin inherited; end; // Вот самое интересное, не много не понятно почему так procedure TForm1.Button2Click(Sender: TObject); var xTree: TTreeViewItem; begin // Тут все работает xTree := TTreeViewItem.Create(nil); xTree.Text := 'Тест2'; xTree.Parent := TreeView1; end; procedure TForm1.Button3Click(Sender: TObject); var xTree: TNodeItem; begin // И тут все работает xTree := TNodeItem.Create(nil); xTree.Text := 'Тест3'; xTree.Parent := TreeView1; end; procedure TForm1.Button4Click(Sender: TObject); var xTree: TNodeItem2; begin // А вот тут не работает, узел добавляется, а текста нет. xTree := TNodeItem2.Create(nil); xTree.Text := 'Тест4'; xTree.Parent := TreeView1; end;
  9. При использовании FreeAndNil использовать NIL не нужно Если честно- не совсем понятна первая строка. И если хотите помощи - смотрите правила размещения тем(прикрепляйте демку, в которой будет суть вашей проблемы) P.S. Использование фреймов - теоретически очень упрощает разработку. На практике же - будьте готовы к ошибкам Рад студио при работе с фреймами. Разобрался все заработала... как говорится глупость с морозил
  10. так на всякий случай
  11. да испробова... без изменений (внутри ListBox - есть FToInflate: TList<TListBoxItem>, куда складываются все Item - ы... ), а что дальше делать не придумал
  12. Производим заполнение ListBox for i := i fo Count - 1 do begin xItm := TListBoxItem.Create(nil); xItm.Height := 30; xItm.Parent := ListBox; xItm.Text := xV2.Name; xItm.Data := xV2; end; Тут все нормально заполняется, но как и вызваем ListBox.clear, список зачищается при повторном заполнение восстанавливаются предыдущий значение