Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Несколько вопросов по StringGrid   Найти похожие ветки 

 
uno-84   (2008-07-02 08:41) [0]

Здравстуйте! У меня несколько вопросов по StringGrid, я добавляю в него записи

with StringGrid1 do
          begin
             RowCount := k+1;
             for i := 1 to RowCount do
             begin
                  if FieldByName("MESSAGE_IMPORTANCE").AsString = "T" then StringGrid1.Cells[0, i] := "!" else StringGrid1.Cells[0, i] := "";
                  if FieldByName("MESSAGE_ATTACH_COUNT").AsInteger > 0 then StringGrid1.Cells[1, i] := FieldByName("MESSAGE_ATTACH_COUNT").AsString
                     else StringGrid1.Cells[1, i] := "";    
                  if FieldByName("MESSAGE_ORIGINALMSG").AsString > "" then StringGrid1.Cells[2, i] := "Ответ" else StringGrid1.Cells[2, i] := "";
                  if FieldByName("MESSAGE_NOTIFY").AsString = "T" then StringGrid1.Cells[3, i] := "+" else StringGrid1.Cells[3, i] := "-";
                  if FieldByName("MESSAGE_TYPE").AsString = "R" then StringGrid1.Cells[4, i] := "Извещение о прочтении"
                     else
                     begin
                          if FieldByName("MESSAGE_WORK_TYPE").AsString = "T" then
                          begin
                          StringGrid1.Cells[5, i] := FieldByName("MESSAGE_WORK_PRO").AsString + "%";
                          StringGrid1.Cells[4,i] := "Служебное задание";
                          end
                           else
                           begin
                           StringGrid1.Cells[4, i] := "Обычное сообщение";
                           StringGrid1.Cells[5, i] := "";
                           end;
                     end;

                  StringGrid1.Cells[6, i] := FieldByName("USER_NAME1").AsString;
                  StringGrid1.Cells[7, i] := FieldByName("MESSAGE_RECIPIENTS_NAMES").AsString;
                  StringGrid1.Cells[8, i] := FieldByName("USER_NAME").AsString;
                  StringGrid1.Cells[9, i] := FieldByName("MESSAGE_SUBJECT").AsString;
                  StringGrid1.Cells[10, i] := FieldByName("MESSAGE_SEND_DATE").AsString;
                  StringGrid1.Cells[11, i] := FieldByName("MESSAGE_RECEPT_DATE").AsString;
                  StringGrid1.Cells[12, i] := FieldByName("MESSAGE_READ_DATE").AsString;
                  StringGrid1.Cells[13, i] := FieldByName("MESSAGE_ID").AsString;
            Next;
            end;
1. Можно ли вставить в StringGrid1.Cells[14, i] CheckBox и как отслеживать поставлен чек или нет?
2. В Cells[5, i] нежен прогресс бар или что-то в этом роде, для визуального представления процента?
3. Как сделать так что-бы записи писались по центру ячейки?
Подскажите пожалуйста.
Заранее спасибо


 
han_malign ©   (2008-07-02 09:38) [1]

Перекрыть DrawCell(OnDrawCell) и отрисовывать что угодно и как угодно...
1. Как отрисовать CheckBox можно посмотреть в модуле CheckLst - TCheckListBox.DrawCheck. Состояние можно хранить в Objects (Objects[c,r]:= TObject(1); case integer(Objects[c,r]) of ...).
2.
procedure DrawSimpleHProgressBar(aCanvas: TCanvas; const aRect: TRect; aColor, aTextColor: TColor;
  aText: string; aPercent: byte; aHCenterText: boolean);
var W,H,X,Y: integer;
   _rect: TRect;
   _clr: TColor;
   _bs: TBrushStyle;
begin
  if(aPercent>100)then aPercent:=0;
  W:=aRect.Right-aRect.Left+1; H:=aRect.Bottom-aRect.Top+1;
  _rect:=aRect;
  if(aPercent>0)then begin
     _rect.Right:=aRect.Left+W*aPercent div 100-1;
     _clr:=aCanvas.Brush.Color;
     aCanvas.Brush.Color:=aColor;
     aCanvas.FillRect(_rect);
     aCanvas.Brush.Color:=_clr;
     aText:=aText+" "+IntStr(aPercent)+"%";
     _rect.Left:=_rect.Right+1;
     _rect.Right:=aRect.Right;
  end;
  if(_rect.Right>=_rect.Left)then aCanvas.FillRect(_rect);
  Y:=(H-aCanvas.TextHeight(aText))div 2;
  if(Y<0)then Y:=0;
  X:=(W-aCanvas.TextWidth(aText))div 2;
  if(X<0)then X:=0;
  if((X>Y)and not aHCenterText)then
     if(Y>0)then X:=Y
     else if(X>2)then X:=2;
  _bs:=aCanvas.Brush.Style;
  aCanvas.Font.Color:= aTextColor;
  aCanvas.Brush.Style:=bsClear;
  aCanvas.Refresh;
  aCanvas.TextOut(aRect.Left+X,aRect.Top+Y,aText);
  aCanvas.Brush.Style:=_bs;
end;

3. DrawText(Canvas.Handle, ...) вместо Canvas.TextOut/TextRect(...) и будет тебе щастье... хотя можно и вручную извратиться как в п.2.


 
Sergey13 ©   (2008-07-02 09:46) [2]

> [0] uno-84   (02.07.08 08:41)

Я так понимаю что твои FieldByName-ы из какого-то датасета? Почему тогда не DBGrid?


 
uno-84   (2008-07-02 09:51) [3]

Смысла просто не видел в DBGride, мне надо бало просто визуально представить информацию, не изменений ни коких либо опереций проводить над ней не надо не надо, поэтому выбрал StringGrid, как более простой


 
Sergey13 ©   (2008-07-02 09:53) [4]

> [3] uno-84   (02.07.08 09:51)

Ну так, по аналогии, ты выбрал в качестве транспорта лыжи. Причем в городе. 8-)


 
uno-84   (2008-07-02 09:56) [5]

Выбрал лыжи)))))) и остался дома)))))


 
Ega23 ©   (2008-07-02 10:00) [6]


> Смысла просто не видел в DBGride, мне надо бало просто визуально
> представить информацию, не изменений ни коких либо опереций
> проводить над ней не надо не надо, поэтому выбрал StringGrid,
>  как более простой


пацталом.
Вот оно, тлетворное влияние апологетов редактирования в гриде.


 
Sergey13 ©   (2008-07-02 10:02) [7]

> [6] Ega23 ©   (02.07.08 10:00)

Хочешь поговорить об этом? Опять?!!!
8-)


 
Ega23 ©   (2008-07-02 10:06) [8]


> Хочешь поговорить об этом? Опять?!!!


(с надрывом)  Да!!! Это такие как ты виноваты!!!


 
Sergey13 ©   (2008-07-02 10:12) [9]

> [8] Ega23 ©   (02.07.08 10:06)

Ну что-ж, прокурор (обвиняющий) начинает судебные прения сторон. Начинай. 8-)


 
_Guest_   (2008-07-02 10:13) [10]


> Sergey13 ©   (02.07.08 09:46) [2]
> Я так понимаю что твои FieldByName-
> ы из какого-то датасета? Почему тогда не DBGrid?

Может чтобы выводить информацию в более удобоваримой для пользователя форме, может осуществить какие-либо проверки на вводе прежде чем информация попадет в базу, а может и еще что.


>  [0] uno-84   (02.07.08 08:41)

Многое из того что ты хочешь, реализовано в наборе компонентов XStringGrid, ссылку не вспомню, но яндекс их находит. Колупаю его с прошлой недели, глюков пока не заметил.


 
Ega23 ©   (2008-07-02 10:16) [11]


> Ну что-ж, прокурор (обвиняющий) начинает судебные прения
> сторон. Начинай. 8-)


Да ну. Неохота.
Но то, что TDBGrid чайники начинают считать средством редактирования TTable - это есть плохо.


 
Плохиш ©   (2008-07-02 10:18) [12]


> _Guest_   (02.07.08 10:13) [10]


> > ы из какого-то датасета? Почему тогда не DBGrid?
>
> Может чтобы выводить информацию в более удобоваримой для
> пользователя форме, может осуществить какие-либо проверки
> на вводе прежде чем информация попадет в базу, а может и
> еще что.

Может стоит, для начала, материальную часть изучить?


 
_Guest_   (2008-07-02 10:22) [13]


> Ega23 ©   (02.07.08 10:16) [11]
> Но то, что TDBGrid чайники начинают считать средством редактирования > > TTable - это есть плохо.

Согласен, хотя и чайник :)

Хотел новую тему создать, но спрошу здесь: никто не слышал о компоненте, чтобы и как таблица был развит, как в [10], и с деревом мог работать, как TVirtualStringTree? А то замучался в StringGrid"ах узлы реализовывать.


 
Ega23 ©   (2008-07-02 10:23) [14]


> Может чтобы выводить информацию в более удобоваримой для
> пользователя форме, может осуществить какие-либо проверки
> на вводе прежде чем информация попадет в базу, а может и
> еще что.


Всем этим обладает TDBGrid. А TStringGrid тебе ещё долго придётся точить напильником. ОЧЕНЬ долго.


 
Ega23 ©   (2008-07-02 10:24) [15]


> Хотел новую тему создать, но спрошу здесь: никто не слышал
> о компоненте, чтобы и как таблица был развит, как в [10],
>  и с деревом мог работать, как TVirtualStringTree? А то
> замучался в StringGrid"ах узлы реализовывать.
>


Какую конкретно функциональность ты хочешь получить? перечисли, пожалуйста.


 
Игорь Шевченко ©   (2008-07-02 10:32) [16]

а чем плохо редактировать в гриде ?


 
Ega23 ©   (2008-07-02 10:33) [17]


> а чем плохо редактировать в гриде ?


Э нет, я - пас. Если никпик не сорвётся, то там об этом и поговорим.  :))


 
_Guest_   (2008-07-02 10:35) [18]


> Ega23 ©   (02.07.08 10:24) [15]
> Какую конкретно
> функциональность ты хочешь получить? перечисли, пожалуйста.
>

XStringGrid позволяет выравнивать информацию в ячейках, красить их и вешать на столбец внешний редактор, их несколько от простого текстового до чеклистбокса. Этим меня он устраивает, я даже переживу отсутствие многострочности в ячейках. Понятно, что все это можно реализовать и в обычном TStringGrid как в [1], но на порядок или на два писать больше придется. Мне не хватает только дерева с узлами в одном из столбцов. Причем сворачивание/разворачивание узлов иметь хорошо, но в моем случае не обязательно. Но видеть что куда входит надо и одними отступами, по-моему, не обойтись.


 
Игорь Шевченко ©   (2008-07-02 10:36) [19]


> Если никпик не сорвётся, то там об этом и поговорим


благими намерениями вымощена дорога в ад. :)


 
Ega23 ©   (2008-07-02 10:38) [20]


> _Guest_   (02.07.08 10:35) [18]


QuantumGrid от devExpress


 
_Guest_   (2008-07-02 10:43) [21]


> Ega23 ©   (02.07.08 10:38) [20]
>QuantumGrid от devExpress

Он за денежку?


 
Ega23 ©   (2008-07-02 10:44) [22]


> Он за денежку?
>


Да. Чё-то около $600.


 
Sergey13 ©   (2008-07-02 10:47) [23]

> [18] _Guest_   (02.07.08 10:35)
> Мне не хватает только дерева с узлами в одном из столбцов.

Это, ИМХО, немножко странное желание. Обычно (из того что я видел разумеется) грид привязывают к дереву в качестве рядом стоящего детализирующего прибамбаса. И это мне кажется логичным. Но вот показывать конкретно в гриде несколько деревьев - это как минимум дорого с точки зрения вычислений. В этом случае более логично сбоку (можно снизу 8-) от грида воткнуть какой-нибудь деревянный компонент и, лучше, если он будет срабатывать по отдельной кнопке.


 
_Guest_   (2008-07-02 10:48) [24]


> Ega23 ©   (02.07.08 10:44) [22]
> > Он за денежку?> Да. Чё-то около $600.

Проект, для которого он мне нужен, весь стоит дешевле. Воздержусь пока, но за инфу спасибо, разбогатею и потом может пригодится, если к тому времени чего другого не выйдет :)


 
Anatoly Podgoretsky ©   (2008-07-02 10:57) [25]

Это рынок, возьми другой бесплатный, например StringGrid, доточи его напильником и потом оцени работу, даже по нищенским расценкам.


 
_Guest_   (2008-07-02 11:05) [26]


> Anatoly Podgoretsky ©   (02.07.08 10:57) [25]
> Это рынок, возьми другой бесплатный, например StringGrid,
>  доточи его напильником и потом оцени работу, даже по нищенским
> расценкам.

Да, это рынок.
Уже точу, оценивать потом смысла нет, даже если это будет мне дороже.
Просто первые $600 надо как то получить. У всех свои трудности и не буду плакаться о зарплате в глубинке, но есть шанс, что Вы сильно удивитесь, если ее озвучить.


 
Ega23 ©   (2008-07-02 11:06) [27]


> Проект, для которого он мне нужен, весь стоит дешевле.


А тогда и нефиг изголяться.
тоже как-то года 3 назад встала задача по визуализации иерархических НД. Полез в сеть, нашёл QuantumGrid. Начальство сказало: "$600????? Да вы чё? У нас программистов куча. Пишите сами."
Писал я это дело месяца 2 в общей сложности. Получил бесценный опыт по созданию VCL-компонент вообще, по связке TDataSet-TDataSource-TDataLink и т.п.
Начальство сколько проиграло - трудно сказать. Зарплата в то время у меня было в районе $800. Вот и считай: $800*2 - $600 + Упущенная прибыль за полтора месяца


 
_Guest_   (2008-07-02 11:14) [28]


> Ega23 ©   (02.07.08 11:06) [27]
> Зарплата в то время у меня было в районе $800. Вот и считай: $800*2
> - $600 + Упущенная прибыль за полтора месяца

Хорошо вам - крепким орешкам :), у мня зарплата чуть меньше полутора тысяч евро... в год и дело, в общем то, не в квалификации или специальности - это средняя з/п по городу. Поэтому компоненты не пишем, а если пишем, то по году минимум :) чтобы деньги отбить.


 
Ega23 ©   (2008-07-02 11:21) [29]


> У всех свои трудности и не буду плакаться о зарплате в глубинке,
>  но есть шанс, что Вы сильно удивитесь, если ее озвучить.


А это не важно: в глубинке или где. Заказчик везде и всегда хочет "чего-то такого". Т.е. - наворотов. "Штоб печатало ещё и в pdf", "Штоб всё в Excel сохранялось, от 5.0 до 2007", "Чтобы выборки трёхмерные были", "Ой, а чё это у вас альфа-канала на иконках нет?" и т.п.
И зачастую такая дурная прихоть обходится в 50% времени, затраченного на ВЕСЬ проект.
И в этом случае надо уметь заказчику объяснить, что такая "маленькая доделка" будет стоить (сумма прописью). Причём объяснить, по какой причине это будет столько стоить.
Как правило в этот момент у заказчика падает челюсть и он отзывает свою "хотелку".

Реальный случай.
Ставили на один объект свой комплекс. Отношения с заказчиком - очень хорошие. Тут они нас просят: надо им какой-то отчёт сделать очень хитрый. Мы подумали, посовещались - и выслали админу sql-скрипт (админ там продвинутый, это не опасно). Те довольны, отчёт делается, всё нормально. Но вот больно долго им это копировать. "А встройте-ка его в свой коплекс?". Да не вопрос. Посчитали, сколько это будет стоить - те сказали: нафик, будем sql-скриптом пользоваться.


 
_Guest_   (2008-07-02 11:27) [30]


> Ega23 ©   (02.07.08 11:21) [29]

Я и сжелезом то не очень, а с людьми вообще работать не умею, придется учиться обламывать заказчиков.
Дискуссия крайне интересная, но тогда надо уходить из этой ветки, касательно стринггридов все уже выяснили.


 
Anatoly Podgoretsky ©   (2008-07-02 11:29) [31]

> _Guest_  (02.07.2008 11:05:26)  [26]

Оценивать и не надо, поскольку 600 баксов для фирмы это часов 6, максимум 24 часа работы одного разработчика, ясно же что за это время не написать даже наброска.


 
Anatoly Podgoretsky ©   (2008-07-02 11:34) [32]

> Ega23  (02.07.2008 11:06:27)  [27]

Ты неправильно считаешь, ты считаешь только то, что тебе лично заплатили, а предприятию работник обходится во много раз дороже, если это будет 100 баксов, то считай, что я поскромничал. Но как минимум не в сфере наукоемких технологий, а например на ломате, заплатить работнику свыше 30 процентов это влезть в убытки.даже в этом случае выходит 800/0,3 * 2 - 600 без аммортизации оборудования и прочего.
Считать по зарплате это чисто совковый подход, а еще более совковый подход не считать и это, мы мол тебе все равно платим, так что бесплатно. Ну и конечно полная разработка далеко не два месяца.


 
Anatoly Podgoretsky ©   (2008-07-02 11:35) [33]

> _Guest_  (02.07.2008 11:14:28)  [28]

Туркменистан?


 
Ega23 ©   (2008-07-02 11:40) [34]


> без аммортизации оборудования и прочего.


Ну ясное дело, я сюда не включал амортизацию компов, аренду помещения, оплату электричества и т.п.
А то, что совковый подход - так я согласен. Я идею подал - начальство её не оценило. Я в любом случае остался в плюсе, т.к.:
1. Продолжал получать зарплату.
2. Занимался крайне интересным для меня делом на законных основаниях в рабочее время на рабочем месте.
3. Получил опыт по созданию компонентов вообще, узнал, как организована работа в VCL с DBAware компонентами.

Будь я сам себе хозяин - безусловно бы купил этот грид, разобрался бы с ним один раз и дальше везде бы его толкал. Но - совок неистребим. :)))


 
_Guest_   (2008-07-02 11:43) [35]


> Anatoly Podgoretsky ©   (02.07.08 11:35) [33]
> > _Guest_  (02.07.2008 11:14:28)  [28]Туркменистан?

Щаз, блин, центральный (нечерноземный) район Росси, Ярославская область. Только не надо рассказывать как хорошо народ получает на НПЗ, Лакокраске или наших Рыбинских Моторах. Получают да не все. Топменеджмент да кто заказами распоряжается.


 
Ega23 ©   (2008-07-02 11:47) [36]


> Щаз, блин, центральный (нечерноземный) район Росси, Ярославская
> область.


Ехай к нам в Дубну через годик-два. Не сильно далеко. А приток специалистов будет ожидаться приличный.


 
Игорь Шевченко ©   (2008-07-02 11:49) [37]


> Ехай к нам в Дубну через годик-два. Не сильно далеко. А
> приток специалистов будет ожидаться приличный.


Площадью обеспечивают ?


 
Ega23 ©   (2008-07-02 11:55) [38]


> Площадью обеспечивают ?


Да, что-то такое готовится. Даже вроде условия не сильно грабительские. Сам не узнавал, ибо уже своё в Дубне есть. Но могу узнать у тех, кто "в теме" более подробно.


 
_Guest_   (2008-07-02 11:55) [39]


> Ega23 ©   (02.07.08 11:47) [36]
> Ехай к нам в Дубну через годик-два. Не сильно
> далеко. А приток специалистов будет ожидаться приличный.

Спасибо, конечно, но во-первых, отчего ты решил, что я вам подойду, а если не вам, то тогда как устраиваться с нуля, а во-вторых, я немолодой, не совсем здоровый человек с комплексом устоявшихся привычек, детьми, родственниками, невыплаченными кредитами и т.д. Тяжело срываться. Тем более у нас не качеством так количеством: никто не заставляет работать только на одном месте. За соответствующую з/п заказчики соотвественно и получают либо времени уделяемого поменьше, либо работу попроще.


 
_Guest_   (2008-07-02 11:57) [40]

Кстати, Дубна - это подмосковье? И чем примерно занимаьтся?



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.007 c
2-1215153063
kudatsky
2008-07-04 10:31
2008.08.03
Утечка памяти


15-1213951588
Сергей_77
2008-06-20 12:46
2008.08.03
Неограниченное использование платной программы


2-1215055645
prodex
2008-07-03 07:27
2008.08.03
Объясните разницу..


2-1215085766
lead-in
2008-07-03 15:49
2008.08.03
CreateProcess


2-1214983297
Олег-5
2008-07-02 11:21
2008.08.03
TListBox + пустое есто





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский