Форум: "Начинающим";
Текущий архив: 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