Перейти к содержанию
  • Регистрация

david_yusupov

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

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

  • Посещение

Весь контент david_yusupov

  1. У меня задача нужно в приложение использоваться jar – файл (программа пишется под windows). В исходниках студи есть Androidapi.Jni – как понимаю это JNI – под андройд, вопрос, как его можно переделать под Windows.Jni – (если это вообще возможности). Если описание JNI – хоть пуская с++, что из своего приложение запускать JVM и выполнять файл jar (библиотеку)
  2. david_yusupov

    Прозрачность

    Как сделать TreeView — прозрачный фон, так что бы видны Item?
  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. да испробова... без изменений (внутри ListBox - есть FToInflate: TList<TListBoxItem>, куда складываются все Item - ы... ), а что дальше делать не придумал
  11. Производим заполнение 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, список зачищается при повторном заполнение восстанавливаются предыдущий значение
  12. После инициализации: if not Assigned(DrugsFrame) then begin DrugsFrame := TDrugsFrame.Create(nil); DrugsFrame.Parent := AParent; DrugsFrame.Align := TAlignLayout.Client; end; в качестве Parent выступает, другой об Fram - а После удаление объекта: if Assigned(DrugsFrame) then begin FreeAndNil(DrugsFrame); DrugsFrame := nil; end; После инициализации, все элементы Fram – а, который участвовал в качестве Parent – а. Но системные кнопки, свернуть, развернуть и закрыть приложение — не доступны.
  13. А так же при дабовление объектов на TFrame2 в дизайнере, порождение TCustomFrame ... то же все работает win2.7z
  14. Есть не красивая решение дать среде переписать файл *.fmx и дополнить свой TFrame не достающими свойствами... то все нормально открывается и собирается. PS: Зачем это делать... что бы всем TFrame приложения - задать одинаковые свойства win1.7z
  15. Использование TFrame, в приложение удобная и позволяет распределить код, и использовать его на разных формах... но есть одна беда (правда к чему эта беда относится не понятно). К пример делаем наследник от TFrame или даже полностью копируем и код TFrame (в другой unit), то все собирается и работает... Вот как только закрываем среду и заново открываем проект и обращаемся к со вему TFrame, то среда по чему-то смерится переписать файл фрейма *.fmx и добавлением свойство которых нет у TFrame. Почему так происходит и как это можно избежать этого? Где в Help (в документации) есть описание связывание файла *.fmx с объектом (порожденного от TСontrol)? ни как не найду Прилогаю файл, свои опыты (тесты) win.7z
  16. Спасибо классная штуку, очень помогло
  17. Делаю программу на подобии осциллографа, есть каретка(которое рисует график) она перемещается от 0 до Width, с шагом MIN_STEP (сейчас значение равно 1.8). До вывода графика формируется массив значение, которые в потоке рассчитываю координаты. После определены координаты строю график if Assigned(Bitmap) then begin Bitmap.SetSize(Round(Self.Width), Round(Self.Height)); with Bitmap.Canvas do begin xLeft := TPathData.Create; xRight := TPathData.Create; BeginScene; try Clear(FColor); SetLeft(xLeft, Fleft); // Копируем массив в TPathData SetRight(xRight, Fright); // Копируем массив в TPathData Stroke.Color := FColorLine; Stroke.Thickness := FThickness; Stroke.Join := TStrokeJoin.Bevel; if xLeft.Count > 0 then DrawPath(xLeft, 1); if xRight.Count > 0 then DrawPath(xRight, 1); finally EndScene; FreeAndNil(xLeft); FreeAndNil(xRight); end; end; end; Примерно раз 25 мс.по таймеру
  18. Анимированные выводит диаграмму (график), сейчас делаем вывод диаграммы на Image, с использованием Bitmap.Canvas. И анимированые осуществляем постоянной перерисовкой. ЗЫ Наблюдаеся не большое по дергивание присмешение и вызывает увелечение нагрузки на процессор.
  19. Вопрос, создал достаточно большую колекцию компанетов... решил каждому иконки, но не как не сображу. Сейчас пока изучаю Help
×
×
  • Создать...