Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
geotub

StringGrid и ImageList

Вопрос

Уважаемые знатоки! Здравствуйте!

с FMX дружу плохо! Задача тривиальная прошу помощи!

есть соединение с MYSQL через Bind Visual привязан к StringGrid, данные отображаются идеально все хорошо!

Задача слеждующая:

- есть колонка "status" со значениями от 0 до 10 

- есть imageList с картинками в таком же диапазоне 

Необходимо в StringGgrid вместо значений выводить картинку из imageList равную значению (значение 3 = номер imageList = 3 и тд) 

Пробовал все Варианты ничего не выходит! Пожалуйста помогите!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Там через MemTable данные погружаться и руками обрабатываются, я имел ввиду  динамически загрузить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Цитата

есть колонка "status" со значениями от 0 до 10 ... в StringGgrid вместо значений выводить картинку из imageList равную значению (значение 3 = номер imageList = 3 и тд) ...  я имел ввиду  динамически загрузить.

В хорошо поставленном вопросе содержится половина ответа, но это не про Вас...

И так чего не понятно из рекомендованного примера? Назначаете свойство Images у вашей сетки (StringGrid). Делаете щелчок правой кнопкой мыши где-то на заголовке GtringGrid, добавляете колонку TGlyphColumn (используя пункт открывшегося контекстного меню). Эта колонка теперь будет отображать картинку с соответствующим номером, вместо текста 0, 1,2,3 и т.п. В том же примере есть варианты работы с наборами данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Я таки так думал, обычно всегда это работает но он ничего не отображает просто пустая строка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Во-первых посмотрите работает ли демо. Если нет, то пишите жалобу, при мне работало :)
Во-вторых, если работает демо, найдите десять отличий своего проекта и демонстрационного.

Например, поскольку у Вас есть связь с набором данных, то лучше использовать не TStringGrid, а TGrid.

Screen.thumb.png.4cad5a19dceb443713c94fed5ed45839.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Авторизация  

  • Похожий контент

    • От traylers
      На форме лежит VertScrollBox в нем лежит два StringGrid, один под другим. У StringGrid'ов высота на весь контент, т.е. собственных прокруток у них нет. Но на андроиде если ткнуть в StringGrid и попробовать прокрутить, то прокрутка не работает, только если взяться за любой другой элемент. Как это можно исправить?
    • От Alex7wrt
      Хочу поделиться картинкой с помощью ShowShareSheetAction. При выборе отправки на gmail получаю сообщение "Permission Denied for the attachment" и отправляется только текст, в facebook и facebook messenger отправляется только картинка без текста. Можно ли это исправить? Чтобы отправлялся текст с картинкой?
      И можно ли заменить заголовок в окошке выбора способа отправки - отображается как "Send text/image using", не зависимо от языка. А хотелось бы что-то покрасивее.
      Delphi 10 Berlin
       
    • От Володимир Антонашко
      Здраствуйте.
      В программе я заполняю Tgrid изображениями из Imagelist по имени фото который есть в ячейке . Код :
      if column.index = 8 then //Загрузка картинок. if not value.IsEmpty then begin column.BeginUpdate; i:=StrToInt(maingr.Cells[column.Index,row]); imageindex:=main_form.ImageList1.Source.IndexOf(IntToStr(i)); column.Canvas.Clear(RowColor.Color); main_form.ImageList1.draw(column.Canvas,bounds,imageindex,100); column.EndUpdate; end; Если я уберу очистку канвы то изображения накладуються. А так как есть следующий раз при вызове DrawColumnCell изображение остается только в последней записи.
      Но такой код в  процедуре SelectCell нормально отображает изображение. На каждый вызов. Даже если изображение в ячейке нету.
      if acol = 8 then begin i:=maingr.Cells[Acol,Arow]; imageindex:=main_form.ImageList1.Source.IndexOf(i); imageviewer1.Bitmap.Clear(TAlphaColors.Null); imageviewer1.Bitmap:=main_form.ImageList1.Bitmap(size,imageindex); end; И по поводу памяти. Как я понял, после того как я присвою изображение ячейке, оно загружается в память. Также когда отображается в ImageViewer.
      Но после удаления строки с изображениям, память остается занята для уже использованных изображений.  То есть при повторном показе память больше не занимается и используется изображение которое было ранее загружено. Думаю это нормальное поведение. Так увеличивается скорость работы программы. Но я собираюсь показывать до 50 фотографий одновременно (средний размер 1мб) из 5-10 тисяч. И мне нужно чтоб после использования изображений память очищалась, иначе программа будет кушать под 10гб оперативной памяти.
    • От Rusland
      Delphi Tokyo
      ListView->ItemAppearance->ItemAppearance=DynamicAppearance
      Есть ImageList c 3 картинками.
      Добавляю item-ы в ListView:
      procedure TForm1.Button1Click(Sender: TObject); var i:integer; Lvi: TListViewItem; begin LsvObjects.BeginUpdate; LsvObjects.Items.Clear; try for i:=0 to 100 do begin Lvi := LsvObjects.Items.Add; Lvi.Tag := i; Lvi.Data['ObjectText'] := 'ObjectText '+i.ToString; Lvi.Data['StateText'] := 'StateText '+i.ToString; Lvi.Data['ConnectText'] := 'ConnectText '+i.ToString; end; finally LsvObjects.EndUpdate; end; end; в UpdateObjects рандомно выбираю картинку:
      procedure TForm1.LsvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var ... oConnectImage: TListItemImage; r: integer; begin r:=Random(ImageList1.Count); oConnectImage:=aItem.Objects.FindDrawable('ConnectImage') as TListItemImage; if (oConnectImage<>nil) then oConnectImage.ImageIndex:=r; ... end; В Windows все нормально. А вот что я вижу на планшетах:
      На Dexp:   
      На Lenovo:
       
      Картинки могут появиться, а могут и нет. Как исправить ситуацию? Вот сам проект.
      Про Berlin добавлю вопрос позже.
    • От Сергей Сергеев
      Привет всем!
      Поймал такой глюк - пока только на одном устройстве - Samsung gt i9505 andr 4.2.2 - ядро 3.4.0, на десятке других не замечено.
      Delphi Seattle 6.1 b 7601 - win 7 - 64  Android SDK 25.2.2.-32 bit
      Создал форму, на нее кнопку , ImageList - загрузил одну иконку 32*32 
      из 10 запусков - один с картинкой на кнопке , 9 - без.. причем она вроде есть.. но как марево из точек..
      тоже самое с Glyph ( добавил), а в TImage ( добавил) - где изображение загружено напрямую в битмап - все ок.
      Что делать - как обойти?Спасибо всем заранее..
       
    • От maxma777
      Подскажите как сделать StringGrid в виде шахматной доски. И чтобы цифры были видны.
      procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject;
        const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
        const Row: Integer; const Value: TValue; const State: TGridDrawStates);
       begin
            if Row mod 2 = 0 then
            if Column.Index= 3 then
            begin
               CoLumn.Padding.Rect:=rectF(0,0,0,0);
              Canvas.Fill.Color:=TAlphaColorRec.Black;
              Canvas.FillRect(Bounds,0,0,[],1);
            end;
          end;
      Искал в инете но что не один вариант не подошел.
      Вроде должно быть легко, ну что то у меня проблемы с Fire Monkey. 
      Приложение делаю на Delphi 10.1 Berlin

    • От web_warp
      В DrawColumnCell провожу зарисовку некоторых строк, необходима подсветка цветом. И тут возникла неожиданная проблема на ровном месте: ячейка, где текстом записано время, почему-то меняет местами время и дату, хотя передаётся в функцию FillText как надо.
      TabbedForm->StringGrid1->Canvas->Fill->Color = background_color; TabbedForm->StringGrid1->Canvas->FillRect(Bounds, 0, 0, AllCorners, 100); TabbedForm->StringGrid1->Canvas->Fill->Color = font_color; TabbedForm->StringGrid1->Canvas->Font->Style << fsBold; TabbedForm->StringGrid1->Canvas->FillText(Bounds,TabbedForm->StringGrid1->Cells[Column->Index][Row], false, 100,TFillTextFlags() << TFillTextFlag::ftRightToLeft, TTextAlign::taTrailing, TTextAlign::taTrailing); Подскажите пожалуйста, как развернуть время обратно?

      Ну и параллельно вопрос: как строку сплошным цветом заливать? Без белых границ?
    • От Alexander
      Попытался открыть проект в Berlin'е, среда выдала ошибку что не находит обработчиков DragOver, DragDrop, DblClick, MouseDown...
      Вопрос: где искать? 
      Если их нет: что делать?
    • От RoschinSpb
      Статья: http://community.embarcadero.com/blogs/entry/timagelist101ru-1 Автор: Сергей Рощин Обзор новых возможностей, которые появились в компоненте и редакторе TImageList для Delphi R101 (2016 год, Version 24)
    • От master webs
      Добрый день такая проблема думал она  только  на android но за метил и на win
      в StringGrid загружаю данные с clientdataset
      но первая строка  чем то перекрыта непонятно чем  любое действие с формой  удаляет перекрытие (ощущение что не прорисована  до конца первая ячейка первой строки)
      когда подгружаю новые данные  ситуация повторяется
      прикрепил изображение
      кстати такой проблемы не было в xe8 появилась в 10 Seattle
      проверил Grid такая же проблема
       
      в ios и mac таких проблем не наблюдаю

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...