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

Просто Проги

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

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

  • Посещение

Активность репутации

  1. Like
  2. Like
    Просто Проги отреагировална kami в argument out of range Listview(Баг ?)   
    точно не правильно.
    1. Создавать TNetHTTPClient нужно в execute потока, а не использовать лежащий на форме.
    2. Работать с визуальными объектами нельзя из execute, об этом 100500 раз предупреждали.
    Посему, правильно с технической точки зрения (упустим пока архитектуру) будет:
    1. в execute создать сетевой компонент и выполнить запрос.
    2. Распарсить запрос
    3. Передать результаты в основной поток и уже в нем работать с ListView.
    Полезно для правильного написания вынести код потока в отдельный модуль. Который НИЧЕГО не должен знать о модуле формы. Поток должен иметь событие, через которое он передает результаты своей работы куда надо. Само собой - вызывать это событие нужно в основном потоке, используя средства синхронизации. Форма при создании потока назначает ему обработчик события и выполняет в нем необходимые действия.
  3. Like
    Просто Проги отреагировална Andrey Efimov в argument out of range Listview(Баг ?)   
    Плюсанул kami. От себя добавлю (чтоб был ) пример с анонимным потоком
    procedure TFormMain.LoadList; begin try // Что-то делаем... TThread.Synchronize(nil, procedure begin // Снихронизируемся с основным потоком, меняем состояние компонентов на форме и т.д. end); // Опять что-то делаем... finally // Выполняем обязательные операции end; end; procedure TFormMain.ButtonClick(Sender: TObject); begin // ListView1.Items.Clear; // Cоздаём анонимный поток TThread.CreateAnonymousThread(LoadList).Start; end;  
    Ещё в студии есть семплы по работе с потоками.
    C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\RTL\HttpAsyncDownload C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\RTL\HttpDownload и ещё где-то там лежат...
  4. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в argument out of range Listview(Баг ?)   
    procedure ClearLV(const aLV: TListView); begin  while aLV.Items.Count > 0 do aLV.Items.Delete(0); end; вызывать так
    ClearLV(ListView1);  
  5. Like
    Просто Проги получил реакцию от Равиль Зарипов (ZuBy) в Как обратиться к Item в ListView   
    тебе нужно знать какой сейчас элемент выбран в listview тогда так можно попробовать.
    label.Text:=ListView1.Selected.Index.ToString(); покажет какой элемент сейчас выбран в listView
  6. Like
    Просто Проги получил реакцию от Alex7wrt в Как обратиться к Item в ListView   
    тебе нужно знать какой сейчас элемент выбран в listview тогда так можно попробовать.
    label.Text:=ListView1.Selected.Index.ToString(); покажет какой элемент сейчас выбран в listView
  7. Like
    Просто Проги отреагировална Brovin Yaroslav в [Windows] Глобальный хук на клавиши возможно ли FMX   
    Так, то что в VCL вы привыкли писать так:
    procedure OnHotKey(var Msg: TWMHotKey); message WM_HOTKEY; Это заслуга Delphi TObject.Dispatch. Суть простая, вызвав Dispatch и передав внутрь сообщение TMessage с ID, TObject автоматически найдет среди ваших методов метод, у которого WM_HOTKEY будет равен ID сообщения. Таким образом можно передавать любые варианты сообщений. Главное, чтобы первые 4 байта - это были ID сообщения. 
    В VCL оконная процедура просто вызывает у формы Form.Dispatch и передает туда виндовое сообщение. Так все и работает.
    В FMX другая идеология, она не редиректит сообщения из оконной процедуры в форму. Поэтому вам предложили сделать следующее:
    Или повесить хук на оконную процедуру и обрабатывать свои сообщения там. Либо сделать редирект сообщения, как я указал на уровне платформы.  
  8. Like
    Просто Проги отреагировална dnekrasov в [Windows] Глобальный хук на клавиши возможно ли FMX   
    Легче всего, по моему мнению, сделать так:
    ... FWnd := AllocateHWnd(WindowProc); ... procedure WindowProc(var AMsg: TMessage); begin case AMsg.Msg of WM_HOTKEY: case TWMHotKey(AMsg).hotkey of 1: ...; 2: ...; ... end; end; end; ... RegisterHotkey(FWnd, ...); // как обычно в VCL ... UnregisterHotkey(...); // как обычно в VCL ...  
  9. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в [Windows] Глобальный хук на клавиши возможно ли FMX   
    Изменить нужно
    WM_GETMINMAXINFO На 
    WM_HOTKEY
  10. Like
    Просто Проги отреагировална Brovin Yaroslav в [Windows] Глобальный хук на клавиши возможно ли FMX   
    Вот, посмотрите мой ответ в другой теме: Обработка WM_GETMINMAXINFO
    Там же есть вариант с хуком и подменой оконной процедуры.
  11. Like
    Просто Проги получил реакцию от Pax Beach в Как listbox можно добавить стиль для items которые не выделены   
    Суть такова копаюсь в стилях, но не могу понять откуда идет наследования есть контейнер content в нем есть selection т,е выделенный элемент лист бокса , возможно ли создать стиль просто для итемов в листбоксе или это не делается через стиль?
  12. Like
    Просто Проги отреагировална Pax Beach в Как правильно загружать аватары пользователей по типу как это делают мобильные приложения.   
    Да, нужно докачать Berlin, или отпилить DynamicAppearance.
     
  13. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в Динамическая подгрузка картинок в ListView   
    Привет Всем!
    Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
    я взял картинки пользователей этого форума

    Seattle LVdynamicLoadBitmap.zip
    Berlin LVdynamicLoadBitmap(Berlin).zip
  14. Like
  15. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в HTML парсер   
    парсер делаю сам через функцию, отлично работает во всех проектах.
    всегда код страницы можно разделить на блоки, если этим не позаботились разработчики и блоки информации не инкременируются
    также можно предложить использовать регулярки
  16. Like
    Просто Проги получил реакцию от Rusland в Неполучается получить элемент из JSON   
    фигасе XSuperObject,  это классно и кода меньше только не совсем понятно что в этой строке происходит
    xItems := xResp.O['Response'].A['Items']; xItems это типа объект весь json xResp.о это респонсе потом идет сразу a итемс а как до count достучаться ? так что ли xItems := xResp.O['Response'].A['count']; и почему o и a вообще просто первый раз с такой штуко работаю) "response": { "count": 104, "items": [
  17. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в Неполучается получить элемент из JSON   
    ай-яй-яй
    var JS : TJSONObject; JSAr : TJSONArray; s : string; i:integer; begin s := Memo2.Text; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; if Assigned(JS) then begin JS := TJSONObject.ParseJSONValue(JS.GetValue('response').ToString) as TJSONObject; JSAr := TJSONObject.ParseJSONValue(JS.GetValue('items').ToString) as TJSONArray; Form2.Memo1.Lines.Clear; for i := 0 to JSAr.Count - 1 do begin JS := TJSONObject.ParseJSONValue(JSAr.Items[i].ToString) as TJSONObject; // внутри цикла нужно Memo2.Lines.Add('id: ' + JS.GetValue('id').Value); Memo2.Lines.Add('first_name: ' + JS.GetValue('first_name').Value); Memo2.Lines.Add('last_name: ' + JS.GetValue('last_name').Value); Memo2.Lines.Add('photo_100: ' + JS.GetValue('photo_100').Value); end; JS.Free; end;  
  18. Like
    Просто Проги отреагировална Равиль Зарипов (ZuBy) в Неполучается получить элемент из JSON   
    используйте XSuperObject, код будет такой
    procedure TForm4.Button1Click(Sender: TObject); // uses XSuperObject; var xResp, xObj: ISuperObject; xItems: ISuperArray; j: Integer; begin xResp := so(Memo1.Text); xItems := xResp.O['Response'].A['Items']; for j := 0 to xItems.Length - 1 do begin xObj := xItems.O[j]; with ListView1.Items.Add do begin Text := xObj.S['first_name'] + ' ' + xObj.S['last_name']; end; end; end;  
  19. Like
    Просто Проги получил реакцию от krapotkin в Неполучается получить элемент из JSON   
    фигасе XSuperObject,  это классно и кода меньше только не совсем понятно что в этой строке происходит
    xItems := xResp.O['Response'].A['Items']; xItems это типа объект весь json xResp.о это респонсе потом идет сразу a итемс а как до count достучаться ? так что ли xItems := xResp.O['Response'].A['count']; и почему o и a вообще просто первый раз с такой штуко работаю) "response": { "count": 104, "items": [
  20. Like
    Просто Проги получил реакцию от Равиль Зарипов (ZuBy) в Неполучается получить элемент из JSON   
    всё понял)спасибо за помощь)
×
×
  • Создать...