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

sviat9440

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

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

  • Посещение

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

  1. Решил эту проблему так: В потоке загружаются изображения и сохраняются в кэш. В OnPaint идет проверка существования файла в кэше, и загрузка его в лист бокс итем.
  2. First chance exception at $76843E28. Exception class EInOutError with message 'The specified directory is not empty'. Process Lotus.exe (684)
  3. Я только оттуда. И я про TIdLog. Для чего они?
  4. хорошо, но что это за компоненты? Они то для чего то предназначены? Я просматривал все их функции и связи уроме названия и взаимоподключения не нашел
  5. Тогда можно вполне обойтись без библиотек)) Содать свой кроссплатформенный модуль и все...
  6. Интересно, где можно скачать? Или что в uses писать? Он будет автоматически записывать все события приложения? или надо записывать вручную? Скачал Log4D, при компиляции пишет: [dcc32 Fatal Error] Log4D.pas(33): F2613 Unit 'Comobj' not found.
  7. Да она не пуста. Не знал что пустые только удаляются. Есть ли процедура удаления папки с файлами?
  8. sviat9440

    RemoveDir

    Имеем код: CreateDir(Path + '/Lotus/base/' + BaseID + '_content'); Zip.ExtractZipFile(Path + '/Lotus/base/' + BaseID, Path + '/Lotus/base/' + BaseID + '_content'); DeleteFile(Path + '/Lotus/base/' + BaseID); TString1 := TStringList.Create; TString1.LoadFromFile(Path + '/Lotus/base/' + BaseID + '_content/info', TEncoding.UTF8); JSON := TJSONObject.ParseJSONValue(TString1.Text) as TJSONObject; // ShowMessage(JSON.ToString); TString1.Free; BaseName := JSON.Values['name'].Value; BaseCaption := JSON.Values['caption'].Value; BaseCategory := JSON.Values['category'].Value; BaseVersion := JSON.Values['version'].Value; if MainContentAvailableBaseListBox.Items.IndexOf(BaseID) = -1 then Begin Item := TListBoxItem.Create(nil); Item.Text := BaseID; Item.StylesData['name'] := BaseName; Item.StylesData['caption'] := BaseCaption; Item.StylesData['category'] := BaseCategory; Memory := TMemoryStream.Create; Memory.LoadFromFile(Path + '/Lotus/base/' + BaseID + '_content/img/icon'); Item.ItemData.Bitmap.LoadFromStream(Memory); Memory.Free; MainContentAvailableBaseListBox.AddObject(Item); if MainContentAvailableBaseCategoryListBox.Items.IndexOf(BaseCategory) = -1 then Begin ItemRadio := TListBoxItem.Create(Self); ItemRadio.Text := BaseCategory; ItemRadio.Selectable := False; ItemRadio.Margins.Top := 5; ItemRadio.StylesData['text.OnChange'] := TValue.From<TNotifyEvent>(MainContentAvailableBaseCategoryChange); MainContentAvailableBaseCategoryListBox.AddObject(ItemRadio); End; End; RemoveDir(Path + '/Lotus/base/' + BaseID + '_content'); Вопрос: почему не удаляется папка после его выполнения? Тоесть RemoveDir(Path + '/Lotus/base/' + BaseID + '_content'); не работает. Опять же это все выполняется в потоке. Есть ли более стабильные процедуры стирания папки? Заранее спасибо)
  9. Большое спасибо! Вопрос решен, тему можно закрывать...
  10. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" id="svg2" viewBox="0 0 744.09448819 1052.3622047" height="297mm" width="210mm"> <defs id="defs4" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g id="layer1"> <rect y="240.93364" x="194.28572" height="574.28571" width="402.85715" id="rect3336" style="fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> </svg> Так, и что мне с этим делать? При вставке в нужное поле и сохранение, ничего не происходит...(((
  11. Ну тогда скажите хоть как отлавливать события в форме? Для записи в файл...
  12. Уже понял... ))) все ок!))
  13. Тоесть элемент создается нормально, и отокбражается корректно, но если текст, фото, и пр. будут изменены из еще одного потока, то это не отрисуется до клика по объекту.
  14. С созданием элементов в потоке нет проблем, проблема с отрисовкой элемента после изменения его из потока.
  15. Не все редакторы сохраняют в SVG. Можешь ли ты написать название редактора в котором ты работал?
  16. НЕ. Не програмно. Вот в стилях (TStyleBook) есть кнопка с TPath. То что на этом TPath видно на скрине выше. Вот как мне свои TPath делать, а не использовать уже готовые?
  17. Привет. Как можно рисовать TPath? Зайдя в его свойства я вижу это:
  18. Еще одна деталь: procedure Tmain_form.DownloadMenuButtonClickClick(Sender: TObject); begin MainContentDownloadBaseListBox.Clear; if not (MenuView.Width = 40) then MenuView.HideMaster; if not (MainContent.ActiveTab = MainContentDownloadBase) then ToMainContentDownloadBase.Execute; GetBase; end; Если я сначала очищу а потом опять загружу итемы, то иногда "Пробивает" на закачку всех картинок. Нет такого чтобы одна загрузилась, вторая нет. Либо все, либо ничего.
  19. Проблема с отрисовкой была из за потока. Я в потоке создавал итемы. Ну блин, не одно так другое. Че теперь делать?
  20. Фото не грузятся вообще. Но если я вместо Item.ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + BaseID); Поставлю Memory := TMemoryStream.Create; Browser.Get(Main_URL + 'base/img/' + BaseID, Memory); Item.ItemData.Bitmap.LoadFromStream(Result); Item.ApplyStyleLookup; Memory.Free; То все грузится корректно, если бы не одно но: если баз на сервере будет 100+ то загрузка займет до нескольких минут.
  21. procedure Tmain_form.GetBase; var Browser: TIdHTTP; JSON, JSON1: TJSONObject; i: Integer; Item, ItemRadio: TListBoxItem; BaseName, BaseCaption, BaseCategory, BaseID, BaseData: String; Zip: TZipFile; TString: TStringList; Memory: TMemoryStream; thread: TThread; begin try if Connect then Begin Browser := TIdHTTP.Create(Self); Browser.ConnectTimeout := 1000; Browser.ReadTimeout := 10000; TString := TStringList.Create; JSON := TJSONObject.ParseJSONValue(Browser.Get(Main_URL + 'base/get?client=' + Client)) as TJSONObject; i := 0; if DirectoryExists(Path + '/Lotus/base') and FileExists(Path + '/Lotus/base/data.lotus') then begin Zip := TZipFile.Create; Decode(Path + '/Lotus/base/data.lotus', Path + '/Lotus/base/data.tmp'); if Zip.IsValid(Path + '/Lotus/base/data.tmp') then Begin Zip.Open(Path + '/Lotus/base/data.tmp', zmRead); if (Zip.FileCount = 1) and (Zip.FileName[0] = 'data') then Begin Zip.Extract('data', Path + '/Lotus/base/'); TString.LoadFromFile(Path + '/Lotus/base/data'); DeleteFile(Path + '/Lotus/base/data'); End; Zip.Close; DeleteFile(Path + '/Lotus/base/data.tmp'); End; Zip.Free; end; 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; Item.Selectable := False; Item.StylesData['download.OnClick'] := TValue.From<TNotifyEvent>(MainContentDownloadBaseButtonClick); Item.ItemData.Bitmap.LoadFromUrl(Main_URL + 'base/img/' + BaseID); // Memory := TMemoryStream.Create; // Browser.Get(Main_URL + 'base/img/' + BaseID, Memory); // Item.ItemData.Bitmap.LoadFromStream(Result); // Item.ApplyStyleLookup; // Memory.Free; if (not(TString.IndexOf(BaseID) = -1)) and (FileExists(Path + '/Lotus/base/' + BaseID + '.lotus')) then Begin Item.StylesData['download.Visible'] := False; End; MainContentDownloadBaseListBox.AddObject(Item); 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; End; i := i + 1; End; Browser.Free; TString.Free; MainContentDownloadBaseBlock.Visible := False; End; except MainContentDownloadBaseBlockText.Text := 'Произошла ошибка'; end; end; Вот кое что написал. Вопрос: Почему у меня так:
  22. Во, уже количество неккоректных загрузок сократилось в разы...
×
×
  • Создать...