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

Dozent

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

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

  • Посещение

  • Победитель дней

    2

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

  1. О спасибо Вам за развёрнутый ответ, но я думаю всё же будет лучше если работать с ImageList... Можете дать ссылочку где почитать как подружить ImageList с Image?
  2. ну это был совет с форума, просто попробовал, но не помогло... А чем код приведёный вами по синхронизации лучше? Поясните плз
  3. Только если Вы сделаете TThread.Synchronize(TThread.CurrentThread, {тут процедура отрисовки вашего bitmap}) из того самого "второстепенного" потока. создаю поток procedure TfrmMain.SetInitializationReadDB(iExerciseId: integer); begin ReadAction := TReadActionFromDB.Create(); ReadAction.onReadAction := ReadActionDb; ReadAction.ExId := iExerciseId; ReadAction.Start; end; процедура Exrcute procedure TReadActionFromDB.Execute; var qr: ISyncQueryResult; begin try fRecordsCount := 0; while not Terminated do begin if ExId > 0 then begin qr := AppData.Select('log', [TScriptGetParameterHelper.Create('exercise', ExId)]); if qr.DataSet.RecordCount > fRecordsCount then begin // если появились новые записи qr.DataSet.First; qr.DataSet.MoveBy(fRecordsCount); while not qr.DataSet.Eof do begin // время события fTime := qr.DataSet.FieldByName('VTIME').AsString;; // название события fActionName := qr.DataSet.FieldByName('DESCRIP_ACTION').AsString; // id действия if not qr.DataSet.FieldByName('ID_ACTION').IsNull then fActionID := qr.DataSet.FieldByName('ID_ACTION').AsInteger else fActionID := 0; // номер записи fRecordNumber := qr.DataSet.RecNo; // колличество всех записией fRecordsCount := qr.DataSet.RecordCount; Synchronize(Sync); // Queue(Sync); // Sleep(100); qr.DataSet.Next; end; // Sleep(500); end; end; end; except on E: Exception do DoReadError(E.ClassName + ' ошибка с сообщением : ' + E.Message); end; end; procedure TReadActionFromDB.Sync; begin if Assigned(fonReadAction) then fonReadAction(Self, fTime, fActionName, fRecordNumber, fActionID); end; Кал-бак функцию для отрисовки procedure TfrmMain.ReadActionDb(Sender: TObject; const sTime, sActionName: string; const RecordNumber, ActionID: integer); var Item: TListBoxItem; aFileStream: TFileStream; aBitmap: TBitmap; begin Item := TListBoxItem.Create(nil); Item.Index := 0; // Item.Parent := lbLogActions; Item.Height := 60; Item.Margins.Top := 10; Item.StyleLookup := 'listboxitemaction'; Item.Tag := ActionID; Item.StylesData['timeaction'] := SecToTime(sTime); Item.StylesData['labelaction'] := sActionName; // Item.StylesData['imageaction'] := '.\images\ScenarioImage\actions\' + IntToStr(ActionID) + '.png'; aFileStream := TFileStream.Create('.\images\ScenarioImage\actions\' + IntToStr(ActionID) + '.png', fmOpenRead); try if (aFileStream.Size > 0) then begin aBitmap := TBitmap.CreateFromStream(aFileStream); Item.StylesData['imageaction'] := TValue.From<TBitmap>(aBitmap); Item.StylesData['imageaction.visible'] := True; Item.ItemData.Bitmap.Assign(aBitmap); end; finally FreeAndNil(aFileStream); end; lbLogActions.InsertObject(0, Item); end;
  4. Подгрузка изображение ощучествляется в кал-бак функции второстепеного потока, но срабатывает же он из основного) После синхранизации...
  5. нет, я сейчас попробую или в при загрузки приложения складывать всё в массив или с ImageList попробую, только не понятно как связать TImageList c TImage
  6. Да правильное, бывает просто нужно прокрутить и картинка появится иногда нет) Но метод который помог вам мне не подошёл, мб потому что планшет под виндой. Пока решение не нащёл..
  7. а почему insert, а не add? потому что надо чтобы добавилось в нулевую позицию новый итем а не в последнюю
  8. вариант ZuBy тоже не помог? var aFileStream: TFileStream; aBitmap: TBitmap; .... aFileStream := TFileStream.Create('.\images\ScenarioImage\actions\' + IntToStr(ActionID) + '.png', fmOpenRead); try if (aFileStream.Size > 0) then begin aBitmap := TBitmap.CreateFromStream(aFileStream); Item.StylesData['imageaction'] := TValue.From<TBitmap>(aBitmap); Item.StylesData['imageaction.visible'] := true; Item.ItemData.Bitmap.Assign(aBitmap); end; finally FreeAndNil(aFileStream); end; Этот вариант предпочтительнее для Вашего примера. К сожалению не помогло...
  9. Использую ImageList какой компонент мне нужен для отображения? TGlyph? Я так понимаю TImage не подходит, к нему нельзя подключить ImageList
  10. Проблему решил!) Подключил девайс Surface. Я не знал что он начал складывать все изменения свой отдельный ресурсный файл) Удалил ссылку на него в главной форме и всё норм стало)
  11. Подгрузка в поток не помогла! Картинки также иногда не подгружаются, буду смотреть работу с ImageList
  12. Картина загружена в дизайнере, я не делаю деплой на планшет, я копирую ехе файл на планшет и запускаю...
  13. Dozent

    Не изменяется картинка

    Добрый день! Проблема в том что создавал приложение со статичным изображением человека. Заливал на планшет под виндой 8.0 всё было норм. Теперь переделываю чтобы эта статичная картинка задышала. Т.е. заливаю туда др картинку с дыркой в груди. На место грудной части кидаю картинку, в неё TBitmapListAnimation в него заливаю спрайт дыхания состоящий из 15 картинок в 3 строки. На компе запускаю всё прекрасно дышит!!!! Картинка изменяется. Заливаю на планшет! Прикол в том что картинка статична!!! Она не изменилась Дело даже не в том что анимация не работает, дело в том что картинка не изменилась! Почему я так решил? Потому что картинку дыхания подогнать идеально пока не получилось и там есть зазоры которые не реально не увидеть! Ну так вот этих зазоров на планшете нет!!!! Т.е. картинка не изменилась! Что может быть?! Пробовал Clean у проекта делать! Пересобирать Build, ехе удалять и тд не помогает)
  14. у меня XE8 up1 подскажите как исользовать ImageList, что то не нашёл у image ссылку на него...
  15. Добрый день! Суть в проблемы в следующем. Создал стиль для TListBoxItem В RunTime создаю итемы по событию procedure TfrmMain.ReadActionDb(Sender: TObject; const sTime, sActionName: string; const RecordNumber, ActionID: integer); var iCurItem: integer; Item: TListBoxItem; begin Item := TListBoxItem.Create(nil); Item.Index := 0; // Item.Parent := lbLogActions; Item.Height := 60; Item.Margins.Top := 10; Item.StyleLookup := 'listboxitemaction'; Item.Tag := ActionID; Item.StylesData['timeaction'] := SecToTime(sTime); Item.StylesData['labelaction'] := sActionName; Item.StylesData['imageaction'] := '.\images\ScenarioImage\actions\' + IntToStr(ActionID) + '.png'; lbLogActions.InsertObject(0, Item); end; Проблема в том что, картинки подгружаются не всегда правильно, могу выскочить просто какие-то артефакты, а может вообще уменьшенная часть экрана не понятно почему) Можно видеть на картинке что 2 созданный итем не отобразил картинку Что не так делаю?
  16. Добрый день! Помню на каком-то из последних семинаров показывали как можно быстро и удобно настроить чтобы текст обтекал картику, напомните плз Суть в том что хочу реализовать что бы текст обтекал картинку справа. Т.е. картинка слева вверху, а текст справа и снизу картинки. На одном из последних семинаров показывали как это очень удобно и быстро можно сделать! Забыл! Подскажите кто помнит, плз)
  17. Dozent

    Пример работы с ListView

    Не могу найти пример работы с ListView, мне нужно сделать групировку, добавить картинку слева ну с этим вроде должен разобраться и ещё мне нужно на каждый итем добавить Lable
  18. Знаете! Я снял галки в Multi-Device Preview с Айфон 4 и Айфон5 ни чего не закрывал и проблема пока не появляется))) Если появится я попробую ваш совет
  19. Нет! У меня такого нет! Всё сворачивается прекрасно! Вот кидаю наовый компонент на форму всё проподает! нужно зайти в код и опят ьв дизайнер и всё появляется до следующей какойнить манипуляции с компонентами...
  20. У тебя видео карта какая? Есть подозрение что такая ерунда на NVIDIA.
  21. Добрый день подскажите как побороть БАГУ!!!! XE8 стоит только изменить положение компонента или изменить его размер на форме как все элементы на форме становиться на видимыми!!! Допустим кинул кнопку на форму она сразу не видимая только очертания остаются. Необходимо F12 нажать 2 раза и компоненты появляются! Начинаешь что-нить двигать всё пропадает! Как-то лечится?
  22. НАшёл для себя такой выход { "field_names": ["ID", "VNAME", "VPASSWORD", "RROLE", "VDESCRIPTION", "VNAMEE", "USERROLE"], "data": [ [1, "\u0418\u0432\u0430\u043d\u043e\u0432 \u0418.\u0418.", "123", 1, "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f.", "\u0418\u0432\u0430\u043d\u043e\u0432 \u0418.\u0418.", "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c"], [2, "\u041f\u0435\u0442\u0440\u043e\u0432 \u041f.\u041f.", null, 2, null, "\u041f\u0435\u0442\u0440\u043e\u0432 \u041f.\u041f.", "\u0421\u0442\u0443\u0434\u0435\u043d\u0442"], [4, "\u041b\u043e\u0433\u0438\u043d\u043e\u0432", "321", 2, "", "\u041b\u043e\u0433\u0438\u043d\u043e\u0432", "\u0421\u0442\u0443\u0434\u0435\u043d\u0442"], [5, "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c", "123", 1, "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f.", "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c", "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c"], [3, "\u0421\u0438\u0434\u043e\u0440\u043e\u0432 \u0421.\u0421.", "321", 2, "", "\u0421\u0438\u0434\u043e\u0440\u043e\u0432 \u0421.\u0421.", "\u0421\u0442\u0443\u0434\u0435\u043d\u0442"], [8, "\u0422\u0435\u0441\u04421", "123", 1, "\u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0430\u0440\u043e\u043b\u044c 123", "\u0422\u0435\u0441\u04421", "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c"] ] } function TAppData.JsonToDataSet(AJSON: string): TDataSet; var DataSet: TClientDataSet; jsObject, jsItemObject: TJSONObject; jsArr, jsArrData: TJSONArray; jsValue: TJSONValue; i, j: integer; begin jsObject := TJSONObject.ParseJSONValue(AJSON) as TJSONObject; try // поиск и добавление полей jsArr := jsObject.GetValue('field_names') as TJSONArray; if Assigned(jsArr) then begin DataSet := TClientDataSet.Create(nil); DataSet.Close; // Очищаем перед началом работы DataSet.FieldDefs.Clear; // Очищаем если что было в полях for i := 0 to jsArr.Count - 1 do begin DataSet.FieldDefs.Add(jsArr.Items[i].Value, ftString, 50); end; DataSet.CreateDataSet; end; // добавление данных jsArr := jsObject.GetValue('data') as TJSONArray; if Assigned(jsArr) then begin for i := 0 to jsArr.Count - 1 do begin jsArrData := jsArr.Items[i] as TJSONArray; DataSet.Append; // побавляем поля for j := 0 to jsArrData.Count - 1 do DataSet.Fields[j].Value := jsArrData.Items[j].Value; DataSet.Post; end; end; Result := DataSet; except on e: Exception do begin FreeAndNil(jsObject); DataSet.Free; raise; end; end; end;
  23. Пытаюсь решить задачу, преобразования данных полученых в формете JSON в какую-то структуру для дальнейшей удобной обработки данных и отображения в элементах на форме...
×
×
  • Создать...