Перейти к содержанию
Fire Monkey от А до Я

Razmir

Пользователи
  • Постов

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

  • Посещение

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

  1. Прошу прощения, что поднимаю некротему, но уже устал биться с такой проблемой - В Listbox выводится от 2х до 4х итемов с текстом разной длины, попытался применить этот код, нашел еще другие варианты, уже дошел до того, что тупо создаю label, присваиваю ему текст и autosize в true, высоту label присваиваю итему. Но проблема в том, что любой из кодов нормально работает, если listbox видим на главной форме. Ежели размещаю на другой форме, или на tabcontrol на не основном табе, то почему то код начинает работать только со второго раза. В первый вообще непонятно какие размеры ставятся. Почему так?
  2. Спасибо, но ровно то же самое, появляется только после 2х кликов
  3. Razmir

    SpinBox не отображается в TColumn

    Всем доброго, вопрос такой.RAD Studio 11.2 Нашел как создать свой тип ячейки таким образом: type TSpinBoxCell = class(TSpinBox) private ............................... protected constructor Create(AOwner: TComponent); override; end; ............................... constructor TSpinBoxCell.Create(AOwner: TComponent); begin inherited; ............................... end; procedure TForm1.StringGrid1CreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl); var XSpin: TSpinbox; begin if Column.Index=5 then begin XSpin:= TSpinBoxCell.Create(nil); XSpin.TagObject := Column; XSpin.text:='1'; Control := XSpin; end; end; Проблема в том, что spinbox не отображается пока не кликнешь по ячейке 2 раза, ну и после перехода на другую ячеку он опять исчезает и соответственно не видно результата. Что надо сделать, чтобы это исправить? Заранее благодарю.
  4. Сравнил с вашим вариантом, я не использовал beginupdate, потому как у меня загружается items при onshow и тогда форма как бы подвисает, что не желательно, попробовал с кнопки создавать действительно, практически моментально все создается. Буду думать как организовать загрузку иначе. Спасибо. Уже не впервые выручаете. Отдельное спасибо за подсказку на счет фреймов.
  5. Офигенная вещь фреймы и почему я раньше не знал о них, но тем не менее у меня с ними так:
  6. хм, не подумал об этом
  7. Этот вариант как раз таки без стилизации, динамическое создание компонентов, со стилизацией еще медленнее
  8. Сейчас пробую TFrame, интересная штука, как то раньше не использовал, возможно то, что надо
  9. То есть можно сделать стиль с кнопками и текстом не у итема, а у rectangle, который будет кидаться на пустой итем и у него менять цвет без всяких стилей? точно, надо попробовать.
  10. Так это выглядит визуально, компонентов штук 20
  11. да, тоже думал о таком варианте, даже накидал код, но удалил его, так как такой вариант оказался не приемлем, возникает несколько проблем, например сортировка, несколько колонок и так далее, конечно это все можно решить созданием тонны кода, но зачем тогда стандартные компоненты, если их нельзя использовать?
  12. Код как бы 2 варианта. Первый, это в стилях создаю тот итем как мне нравится, и в цикле присваиваю значения, на примере ListBox: for i := 0 to xcount-1 do begin n:=trunc(date-strtodate(s)); list.Items.Add(nomenklatura[i]); with list.ListItems[list.Count-1] do begin if (n>3) and (n<10) then StyleLookUp:='ListBoxItemBrown1'; if (n<=3) then StyleLookUp:='ListBoxItemGreen1'; if (n>9) then StyleLookUp:='ListBoxItemRed1'; StylesData['Label2.Text']:=xdate[i]; if list.Name='ListBox1' then StylesData['Button1.OnClick'] := TValue.From<TNotifyEvent>(XItemClick); if list.Name='ListBox2' then StylesData['Button1.OnClick'] := TValue.From<TNotifyEvent>(form2.XItemClick); end; end; Здесь вроде как все элементарно, но со стилями вообще жуткие тормоза. Второй вариант динамическое создание компонентов, здесь код побольше: begin FRectangle := TRectangle.Create(Owner); with FRectangle do begin Align:=TAlignLayout(9); Margins.Left:=3; Margins.Right:=3; Margins.Bottom:=3; Margins.Top:=3; XRadius:=7; YRadius:=7; locGradient := TGradient.Create; n:=trunc(date-xdate[i]); if (n>3) and (n<10) then with locGradient do begin Color :=$FFFBFAFA; Color1 :=$FFDABC76; end; if (n<=3) then with locGradient do begin Color :=$FF73FD11; Color1 :=$FF4EA43B; end; if (n>9) then with locGradient do begin Color :=$FFFD834E; Color1 :=$FFC8311A; end; with Fill do begin Kind := TBrushKind.Gradient; Gradient := locGradient; end; end; FDate:=TLabel.Create(self); with FDate do begin Parent:=FRectangle; StyledSettings := []; Text:=xdate[i]; Align:=TAlignlayout.Left; width:=80; Margins.Left:=3; Margins.Bottom:=3; Margins.Right:=3; Margins.Top:=3; textsettings.VertAlign:=TTextalign(0); TextSettings.HorzAlign:=TTextalign(0); TextSettings.Font.Size:=14; TextSettings.Font.Style:=TextSettings.Font.Style + [TFontStyle.fsBold]; end; FName:=TLabel.Create(self); with FName do begin Parent:=FRectangle; Text:=nomenklatura[i]; StyledSettings := []; Align:=TAlignlayout(9); Margins.Left:=5; Margins.Bottom:=3; Margins.Right:=0; Margins.Top:=3; TextSettings.HorzAlign:=TTextalign.Leading; textsettings.VertAlign:=TTextalign(0); textsettings.WordWrap:=true; TextSettings.Font.Size:=14; TextSettings.Font.Style:=TextSettings.Font.Style + [TFontStyle.fsBold]; end; FButton:=TCornerButton.Create(self); with FButton do begin width:=40; Parent:=FRectangle; StyledSettings := []; Align:=TAlignlayout.Right; Margins.Left:=0; Margins.Bottom:=7; Margins.Right:=7; Margins.Top:=7; Xradius:=15; yradius:=15; TextSettings.HorzAlign:=TTextalign(0); textsettings.VertAlign:=TTextalign(0); textsettings.WordWrap:=true; TextSettings.Font.Size:=14; TextSettings.Font.Style:=TextSettings.Font.Style + [TFontStyle.fsBold]; TextSettings.FontColor:=talphacolorRec.Ivory; text:='✔'; OnClick:=FButtonClick; end; FKol:=TCornerButton.Create(self); with FKol do begin width:=40; Parent:=FRectangle; StyledSettings := []; Align:=TAlignlayout(2); Margins.Left:=7; Margins.Bottom:=7; Margins.Right:=0; Margins.Top:=7; Xradius:=15; yradius:=15; text:=floattostr(abs(хvolume[i])); OnClick:=FKolClick; TextSettings.HorzAlign:=TTextalign(0); textsettings.VertAlign:=TTextalign(0); textsettings.WordWrap:=true; TextSettings.Font.Size:=14; if h>=0 then TextSettings.FontColor:=talphacolorRec.Lightgreen else TextSettings.FontColor:=talphacolorRec.Red; TextSettings.Font.Style:=TextSettings.Font.Style + [TFontStyle.fsBold]; tag:=x; end; в этом случае работает быстрей, но тем не менее появление каждого итема можно посчитать
  13. Razmir

    Вывод данных

    Доброго времени. Есть массив данных о товаре, на основании которых должен выводится стилизованный список. Динамически создается Rectangle, который окрашивается градиентом в зависимости от даты поступления, на нем же 2 Button - 1 с информацией об излишке или недостаче, при нажатии на которую появляется окно для коррекции информации, 2 для обновления даты. Так же 2 Label, в которых выводится название товара и дата поступления. Проблема в следующем: пробовал использовать ListBox, ListView, TreeView. При создании списка жуткие тормоза. То есть пока все Item выведутся проходит пару тройку секунд и это при списке из 20 товаров, боюсь представить, как это долго если товаров будет 100 и больше. При чем на андроид таких тормозов нет, только под виндой. Как можно решить данную проблему?
  14. Ох как же я затупил ? ведь ларчик просто открывался. Оказывается проблема вообще не в JSON, на андроид почему то приходит GET запрос с дополнительным символом, из за него то и вылетает. Тема закрыта, спасибо.
  15. Получается с сайта. Function TForm3.GetUTF8Page(URL: String):UTF8String; Var Stream: TStream; Begin Stream:=TMemoryStream.Create; Try NetHTTPClient1.Get(URL, Stream); Stream.Position:=0; SetLength(Result, Stream.Size); Stream.Read(Result[1], Stream.Size); Result:=UTF8ToString(Result); Finally Stream.Free; End; End; procedure TForm3.Button1Click(Sender: TObject); begin JSONText:=GetUTF8Page('https://*******'); JSON:=SO(JSONText);' ............................................................. end; Про DBX сам не понимаю, это было в вашем ответе, касаемо JSON, ну и проверил, действительно короткий вариант работает
  16. Похоже понял в чем проблема, выше сократил данные для удобства восприятия, на самом деле гораздо длиннее. Нашел ваше: нужно забыть про передачу бинарников через string и использовать параметры TDBXStreamValue Вставил короткий вариант и он заработал. Я так понял, что проблема в том, что JSON больше 32кб. Но не понял как использовать TDBXStreamValue, ищу сейчас инфу
  17. {"n":"2","c":[{"A":"F23","B":"Up","C":"5LLL"},{"A":"F12","B":"Down","C":"5LLF"},{"A":"F23","B":"Up","C":"3LLF"},{"A":"F48","B":"Up","C":"57LF"},{"A":"F15","B":"Down","C":"GLL5"}]} 2 варианта, в каждом по 2 строчки, вторые строчки являются последними Без разницы. Так же, под виндой работает, под андроид вылетает ошибка
  18. Razmir

    JSON на андроид ошибка

    Второй день бьюсь, не могу понять в чем причина, надо спарсить данные с JSON, на винде все работает, на андроид вылетает ошибка - Acces violation at addres BAEDD64C, accessing address 0000000D. Использовал 2 варианта, родной System.JSON и XSuperObject: Вариант 1: JSON := TJSONObject.ParseJSONValue(JSONText) as TJSONObject; JSONArray := TJSONArray(JSON.Get('c').JsonValue); Вариант 2: JSON:=TSuperObject.Create; JSON:= SO(JSONText); Ошибки вылетают на последних строчках. В чем может быть проблема? Спасибо.
  19. В общем разобрался. Пересоздал по новой проект и онклик перестал выдавать ошибку. По второй позиции, просто создал несколько стилей label и их применяю. Вопрос закрыт.
  20. Razmir

    События в стилях StylesData

    Здравия всем. Мучаюсь второй день, ни как не получается. В стиле listitema есть кнопка, по нажатию которой необходимо что то выполнить. Перечитал всю ветку по этому вопросу, решения нет. Есть измененный стиль итема листбокса, в который добавлена кнопка. Вычитал здесь, что для обращения к ней, надо сделать так: xitem.StylesData['Button.OnClick'] := TValue.From<TNotifyEvent>(xonclick); Но так не работает. Выдает ошибку- Invalid Class Typecast Так же не получается изменить вид текста, то есть шрифт, цвет, толщину и т.д. Работает только одно: xitem.StylesData['button.Text'] := 'ОК'; Подскажите как быть. Спасибо.
  21. Попробовал, то же самое. В общем на панель кинул rectangle, сетку рисую на нем, а объекты размещаю на панели, так все норм
  22. Приветствую. Рисую координатную сетку с помощью такого кода: with Panel1 do begin Canvas.BeginScene; try Canvas.Stroke.Color:=talphacolorRec.Darkgrey; b:=trunc(Width/CellSize)-1; c:=trunc(height/CellSize)-1; for a := 0 to b do begin if (a mod 10 = 0) then Canvas.Stroke.Thickness:=2 else Canvas.Stroke.Thickness:=1; Canvas.DrawLine(PointF(a * CellSize + 0.5, 0.5), PointF(a * CellSize + 0.5, height-1), 1); end; for a := 0 to c do begin if (a mod 10 = 0) then Canvas.Stroke.Thickness:=2 else Canvas.Stroke.Thickness:=1; Canvas.DrawLine(PointF(0.5, a * CellSize + 0.5), PointF(width-1, a * CellSize + 0.5), 1); end; finally Canvas.EndScene; end; end; Проблема в том, что при размещении компонентов на панели, сетка рисуется и на них. Как от этого избавиться? Спасибо.
  23. Razmir

    Громкость в андроид

    Доброго всем. Подскажите, как программно поменять громкость проигрываемой музыки в андроид (уменьшить, увеличить), либо вызвать системный регулятор громкости? Заранее благодарен.
  24. Доброго времени суток. С ембаркадеровским примером разобраться не смог, а здесь все доступно. Респект. Но все таки проблема есть. У меня почему то при попытке оплаты выдает - "Необходимо войти в аккаунт", хотя я в аккаунте и с других приложений все нормально проходит.
×
×
  • Создать...