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

sviat9440

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

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

  • Посещение

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

  1. Кажется понял: Когда я гружу имг из локалхост, то глючит, а когда с сервера то вроде все ок. Есть ли в TIdHTTP возможность ограничения скорости скачивания?
  2. Хотя иногда встречается проблемы но не так часто...
  3. procedure Tmain_form.GetBase_threadAfterRun(Sender: TIdThreadComponent); var Browser: TIdHTTP; JSON, JSON1: TJSONObject; i: Integer; Item, ItemRadio: TListBoxItem; BaseName, BaseCaption, BaseCategory, BaseID, BaseData: String; IMG: TMemoryStream; Bitmap: TBitmap; begin if Connect then Begin Browser := TIdHTTP.Create(Self); img := TMemoryStream.Create; Bitmap := TBitmap.Create; JSON := TJSONObject.ParseJSONValue(Browser.Get(Main_URL + 'base/get?client=' + Client)) as TJSONObject; i := 0; while i < JSON.Count do Begin BaseData := JSON.Pairs[i].ToString; BaseData := BaseData.Substring(pos('"', BaseData)); BaseName := BaseData.Remove(pos('"', BaseData) - 1); BaseData := BaseData.Substring(pos('"', BaseData)); BaseData := BaseData.Substring(pos(':', BaseData)); JSON1 := TJSONObject.ParseJSONValue(BaseData) as TJSONObject; BaseCaption := JSON1.Values['caption'].Value; BaseCategory := JSON1.Values['category'].Value; BaseID := JSON1.Values['id'].Value; if MainContentDownloadBaseListBox.Items.IndexOf(BaseID) = -1 then Begin Item := TListBoxItem.Create(Self); Item.Height := 120; Item.StyleLookup := 'ListBoxItemDownloadBaseStyle'; Item.Text := BaseID; Item.StylesData['name'] := BaseName; Item.StylesData['caption'] := BaseCaption; Item.StylesData['category'] := BaseCategory; Browser.Get(Main_URL + 'base/img/' + BaseID, IMG); Bitmap.LoadFromStream(IMG); Item.ItemData.Bitmap := Bitmap; // Item.ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + BaseID); // Sleep(100); // Item.StylesData['img'] := '0'; MainContentDownloadBaseListBox.AddObject(Item); End; if MainContentDownloadBaseListBoxCategory.Items.IndexOf(BaseCategory) = -1 then Begin ItemRadio := TListBoxItem.Create(Self); ItemRadio.Height := 30; ItemRadio.StyleLookup := 'RadioListBoxItemStyle'; ItemRadio.Text := BaseCategory; ItemRadio.Selectable := False; ItemRadio.Margins.Top := 5; ItemRadio.StylesData['text.OnChange'] := TValue.From<TNotifyEvent>(MainContentDownloadBaseListBoxCategoryChange); MainContentDownloadBaseListBoxCategory.AddObject(ItemRadio); End; i := i + 1; End; Browser.Free; Bitmap.Free; img.Free; GetBase_thread.Terminate; End else sleep(100); end; Проблема решена.
  4. Может в листбоксе проблема?
  5. Блин... procedure Tmain_form.MainContentDownloadBaseListBoxPaint(Sender: TObject; Canvas: TCanvas; const [Ref] ARect: TRectF); var i: Integer; begin i := 0; if TListBox(Sender).Items.Count > 0 then while i < TListBox(Sender).Items.Count do with TListBox(Sender).Children.Items[1].Children.Items[i] as TListBoxItem do Begin if StylesData['img'].ToString = '0' then Begin StylesData['img'] := '1'; ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + Text); End; i := i + 1; End; end; Все равно. Результат тот же...
  6. Главный поток тормозить не будет?
  7. Кстати, я и в стили напрямую залазил, через ....Children.Items , и через .FindStyleObject[] , результат такой же,..
  8. Как использовать компоненты линейки TIdLog? Насколько я понимаю это для ведения лога? В гугле информации по нему нет. или ищу не то. Кто нибудь юзал его? поделитесь опытом))
  9. Использую BitmapHelper Хотя по сути, если посмотреть в код, то Bitmap Helper делает тоже самое.
  10. Если я залью: Item.ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + BaseID); в отдельные потоки, будет лучше? ну чтобы создавать поток специально для загрузки одного изображения.
  11. Одно НО: использую TListBox ибо с TListView не могу разобраться...
  12. Использую BitmapHelper procedure Tmain_form.GetBase_threadAfterRun(Sender: TIdThreadComponent); var Browser: TIdHTTP; JSON, JSON1: TJSONObject; i: Integer; Item, ItemRadio: TListBoxItem; BaseName, BaseCaption, BaseCategory, BaseID, BaseData: String; // IMG: TMemoryStream; begin if Connect then Begin Browser := TIdHTTP.Create(Self); // img := TMemoryStream.Create; JSON := TJSONObject.ParseJSONValue(Browser.Get(Main_URL + 'base/get?client=' + Client)) as TJSONObject; i := 0; while i < JSON.Count do Begin BaseData := JSON.Pairs[i].ToString; BaseData := BaseData.Substring(pos('"', BaseData)); BaseName := BaseData.Remove(pos('"', BaseData) - 1); BaseData := BaseData.Substring(pos('"', BaseData)); BaseData := BaseData.Substring(pos(':', BaseData)); JSON1 := TJSONObject.ParseJSONValue(BaseData) as TJSONObject; BaseCaption := JSON1.Values['caption'].Value; BaseCategory := JSON1.Values['category'].Value; BaseID := JSON1.Values['id'].Value; if MainContentDownloadBaseListBox.Items.IndexOf(BaseID) = -1 then Begin Item := TListBoxItem.Create(Self); Item.Height := 120; Item.StyleLookup := 'ListBoxItemDownloadBaseStyle'; Item.Text := BaseID; Item.StylesData['name'] := BaseName; Item.StylesData['caption'] := BaseCaption; Item.StylesData['category'] := BaseCategory; // Browser.Get(Main_URL + 'base/img/' + BaseID, IMG); Item.ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + BaseID); // Sleep(100); MainContentDownloadBaseListBox.AddObject(Item); End; if MainContentDownloadBaseListBoxCategory.Items.IndexOf(BaseCategory) = -1 then Begin ItemRadio := TListBoxItem.Create(Self); ItemRadio.Height := 30; ItemRadio.StyleLookup := 'RadioListBoxItemStyle'; ItemRadio.Text := BaseCategory; ItemRadio.Selectable := False; ItemRadio.Margins.Top := 5; ItemRadio.StylesData['text.OnChange'] := TValue.From<TNotifyEvent>(MainContentDownloadBaseListBoxCategoryChange); MainContentDownloadBaseListBoxCategory.AddObject(ItemRadio); End; i := i + 1; End; Browser.Free; // img.Free; GetBase_thread.Terminate; End else sleep(100); end; вот результат:
  13. знаю... для этого юзаю try/except. Просто тут не записал так как могут быть ошибки и их надо исправлять. А есть другие варианты?
  14. В общем проблема только с битмапами. Я ставил и TImage и TRectangle, Результат один...
  15. Всем привет. Есть такая проблема: Вот код потока: procedure Tmain_form.GetBase_threadAfterRun(Sender: TIdThreadComponent); var Browser: TIdHTTP; JSON, JSON1: TJSONObject; i: Integer; Item, ItemRadio: TListBoxItem; BaseName, BaseCaption, BaseCategory, BaseID, BaseData: String; IMG: TMemoryStream; begin if Connect then Begin Browser := TIdHTTP.Create(Self); img := TMemoryStream.Create; JSON := TJSONObject.ParseJSONValue(Browser.Get(Main_URL + 'base/get?client=' + Client)) as TJSONObject; i := 0; while i < JSON.Count do Begin BaseData := JSON.Pairs[i].ToString; BaseData := BaseData.Substring(pos('"', BaseData)); BaseName := BaseData.Remove(pos('"', BaseData) - 1); BaseData := BaseData.Substring(pos('"', BaseData)); BaseData := BaseData.Substring(pos(':', BaseData)); JSON1 := TJSONObject.ParseJSONValue(BaseData) as TJSONObject; BaseCaption := JSON1.Values['caption'].Value; BaseCategory := JSON1.Values['category'].Value; BaseID := JSON1.Values['id'].Value; if MainContentDownloadBaseListBox.Items.IndexOf(BaseID) = -1 then Begin Item := TListBoxItem.Create(Self); Item.Height := 120; Item.StyleLookup := 'ListBoxItemDownloadBaseStyle'; Item.Text := BaseID; Item.StylesData['name'] := BaseName; Item.StylesData['caption'] := BaseCaption; Item.StylesData['category'] := BaseCategory; Browser.Get(Main_URL + 'base/img/' + BaseID, IMG); Item.ItemData.Bitmap.LoadFromStream(IMG); // Sleep(100); MainContentDownloadBaseListBox.AddObject(Item); End; if MainContentDownloadBaseListBoxCategory.Items.IndexOf(BaseCategory) = -1 then Begin ItemRadio := TListBoxItem.Create(Self); ItemRadio.Height := 30; ItemRadio.StyleLookup := 'RadioListBoxItemStyle'; ItemRadio.Text := BaseCategory; ItemRadio.Selectable := False; ItemRadio.Margins.Top := 5; ItemRadio.StylesData['text.OnChange'] := TValue.From<TNotifyEvent>(MainContentDownloadBaseListBoxCategoryChange); MainContentDownloadBaseListBoxCategory.AddObject(ItemRadio); End; i := i + 1; End; Browser.Free; img.Free; GetBase_thread.Terminate; End else sleep(100); end; В общем он должен загружать с сервера список итемов и заливать их в лист бокс. Проблема в том что не всегда итемы в листбоксе отображаются корректно. Если я вместо sleep(100) (закомментирован), поставлю ShowMessage('dd');, то все отрисовается корректно. Ниже прилагаю скрины как оно может быть отрисовано. Надеюсь на вашу поддержку))))
  16. Можно будет под линукс собирать ?
  17. sviat9440

    TZipFile

    Тут получается только под андроид?
  18. sviat9440

    TZipFile

    Я думаю вы поняли, что шифрование не текста а бинарных данных. К сожалению гугл пока ответов не дает, видимо ищу не там где нужно)) P.S. Такс, с шифрованием файлов вопрос решен. uses EncdDecd Осталось выяснить поддерживает ли делфи пароли в Zip.
  19. sviat9440

    TZipFile

    Привет, друзья. Есть задача, чтобы прога работала с Zip архивом. Но Zip архив должен быть либо запароленным либо сам файл зашифрованным. Как это реализовать? Можно ли установить пароль при создании файла в TZipFile? Если нет, то какие есть способы шифрования файлов? (Желательно универсальные, для всех доступных ОС)
  20. sviat9440

    Windows 7 и TStyleBook

    Мне лень под каждую ОС добавлять отдельные стили)) Default будет работать?
  21. sviat9440

    Windows 7 и TStyleBook

    Угу, вижу. Там есть два пункта: Windows 10 Desktop Default Default - пустой. Загрузил в него стили. Так?
  22. sviat9440

    Windows 7 и TStyleBook

    Спасибо, 1/2 решен)) Теперь надо выяснить проблема у меня или в FireMonkey. У кого вин7? Стили пашут?
  23. sviat9440

    Windows 7 и TStyleBook

    Всем привет! Давно с вами не виделись)) Вот такая проблема есть: У меня Виндовс 10, и все корректно отображается. Я имею в виду стили. У меня на данный момент нет возможности протестировать приложение на Виндовс 7, но прилагаю скрины (Как должно/Как отображается). Вопрос: Проблема у меня? Или на стороне FireMonkey? Попутный вопрос: Если на стороне FireMonkey, то как узнать версию ОС, чтобы при запуске на вин7, сообщать пользователю что то типа "Твоя ОС не поддерживается"? Дополнительная информация: Используется Delphi XE 10 Seattle.
×
×
  • Создать...