Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

StringGrid событие DrawCell   Найти похожие ветки 

 
Сергей М. ©   (2006-11-17 10:25) [40]

Мда ...
Маразм крепчал ..


 
alex810 ©   (2006-11-17 10:26) [41]


> Чтобы заставить стринггрид перерисовать все ячейки, достаточно
> написать StringGrid.Invalidate

Только что сделал он белый а мне нужно чтобы он рисовал в соответсвии что находится в другом гриде и на каком месте.


 
Elen ©   (2006-11-17 10:27) [42]


> У меня восемь гридов  7Х24

Чем дальше в лес - тем толще партизаны. Даже и не знаю что советовать...


 
alex810 ©   (2006-11-17 10:27) [43]


> А зачем ещё 96 эдитов? Вочему они не в гриде?

Каждые 24 грида соответствуют одному тарифному сезону а их 4


 
Elen ©   (2006-11-17 10:29) [44]


> Каждые 24 грида

А в гридах колонок сколько? и чем они заняты?


 
ASoft   (2006-11-17 10:29) [45]


> alex810 ©   (17.11.06 10:22) [38]
>
>
> > А грид 4х7 сделать раз и навсегда мысль не приходила?
>
> У меня восемь гридов  7Х24.

alex810 ©   (17.11.06 10:27) [43]

> А зачем ещё 96 эдитов? Вочему они не в гриде?

Каждые 24 грида соответствуют одному тарифному сезону а их 4


 
Elen ©   (2006-11-17 10:32) [46]


> Каждые 24 грида соответствуют одному тарифному сезону а
> их 4
>

Думаю без скриншота не понять автора... :-\


 
alex810 ©   (2006-11-17 10:34) [47]

Ща попробую нарисовать
_________
! 1!2!3!4!5!

Например это первый грид. Мне нужно чтобы во втором гриде вместо 1 на перво был цвет идентификатор которого соответствовал бы единице и все это рисовалось бы пр Create формы. Например

procedure TForm3.FormCreate(Sender: TObject);
begin
прорисовка второго грида
end.

или при переходе с одного TabSheet на другой
а если не прорисовывать то рисуе последнее выделение мишью


 
alex810 ©   (2006-11-17 10:35) [48]


> Думаю без скриншота не понять автора... :-\

А куда можно поместить скриншот?


 
Elen ©   (2006-11-17 10:38) [49]


> Ща попробую нарисовать

У кого нибудь валидолЪчик есть? Так в чем проблема, док?


 
ЮЮ ©   (2006-11-17 10:39) [50]


> Только что сделал он белый а мне нужно чтобы он рисовал
> в соответсвии что находится в другом гриде и на каком месте.
>
>

Вот в OnDrawCell  этого грида и должно быть написано, где взять эти цвета, закраска этими цветами ячеек и вывод текста.
Код этого обработчика в студию, если, конечно это не те самые 2000 строк кода :)


 
alex810 ©   (2006-11-17 10:39) [51]


> Каждые 24 грида соответствуют одному тарифному сезону а
>
> > их 4

Извените обшипся не грида а эдита. Запарился


 
Elen ©   (2006-11-17 10:40) [52]


> alex810

в OnDrawCell второго грида прорисовывай колором из такой же ячейки первого грида учитывая твою "палитру" StringGrid1.Invalidate вызывай где угодно и не парься...


 
ЮЮ ©   (2006-11-17 10:43) [53]

и все это рисовалось бы пр Create формы.

Читатай внимательно [35], [50], [52]


 
Elen ©   (2006-11-17 10:45) [54]


> Читатай

Что тоже валидольчик уже нужен? :)


 
Сергей М. ©   (2006-11-17 10:47) [55]


> нужно чтобы во втором гриде вместо 1 на перво был цвет идентификатор


Еще раз спрашиваю - зачем !?

Ведь ты же сам сказал, что цвет ячейки грида должен точно соответствовать цвету "кликнутого" эдита !

Эдит уже хранит хранит в своем св-ве Color этот идентификатор, так на кой черт еще массив понадобился ? Объясни ты мне, тупому ..


 
alex810 ©   (2006-11-17 10:54) [56]

Извените связ оборвалась
Кликаем на гриде 2 и запоминаем начальную позицию выделения

procedure TForm3.StringGrid2Click(Sender: TObject);
begin
x1:=Form3.StringGrid2.Selection.TopLeft.X;
y1:=Form3.StringGrid2.Selection.TopLeft.Y;
end;


Отпускаем мышу и запоминаем конечную позицию выделения. В гриде 2 записываем цену которая указана в эдите. В гриде 1 записываем идентификатор цвета который соответсвтует цвету едита


procedure TForm3.StringGrid2MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 var i,j:integer;
begin
x11:=Form3.StringGrid2.Selection.BottomRight.X;
y11:=Form3.StringGrid2.Selection.BottomRight.Y;
For i:=x1 to x11 do
 begin
    for j := y1 to y11  do
     begin
      Form3.StringGrid2.Cells[i,j]:=Cena1;
     end;
 end;
 For i:=x1+1 to x11+1 do
 begin
    for j := y1+1 to y11+1  do
     begin
      Form3.StringGrid1.Cells[i,j]:=IntToStr(Ident1);
     end;
 end;
end;

прорисовываем в гриде 2 ячейки которые выделил цветом едита и записываем в них значени Edit.Text.

procedure TForm3.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
if (state = [gdSelected]) then
   with TStringGrid(Sender), Canvas do
   begin
     Brush.Color := SelectedColor;
     TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
     FillRect(Rect);
end;
end;

Сохраняем в файле идентификатор цвета в гриде 1 и положение этого цвета

procedure TForm3.Button1Click(Sender: TObject);
var
 f: textfile;
 x, y: integer;
begin
 assignfile(f, "\Diplom\Tarif\Zima\Tarif1");
 rewrite(f);
 writeln(f, stringgrid2.colcount);
 writeln(f, stringgrid2.rowcount);
 for X := 0 to stringgrid2.colcount - 1 do
   for y := 0 to stringgrid2.rowcount - 1 do
     writeln(F, stringgrid2.cells[x, y]);
 closefile(f);
///////
 assignfile(f, "\Diplom\Tarif\Zima\Tarif2");
 rewrite(f);
 writeln(f, stringgrid1.colcount);
 writeln(f, stringgrid1.rowcount);
 for X := 0 to stringgrid1.colcount - 1 do
   for y := 0 to stringgrid1.rowcount - 1 do
     writeln(F, stringgrid1.cells[x, y]);
 closefile(f);
end;

Вот тут самое интересное в это процедуре мне нужно разрисовать грид 2
соответственно таким каким он был сохранен

Procedure TForm3.LoadGrid1;
var
 f: textfile;
 temp, x, y: integer;
 tempstr, znach: string;
begin
 assignfile(f, "\Diplom\Tarif\Zima\Tarif2");
 reset(f);
 readln(f, temp);
 stringgrid1.colcount := temp;
 readln(f, temp);
 stringgrid1.rowcount := temp;
 for X := 0 to stringgrid1.colcount - 1 do
   for y := 0 to stringgrid1.rowcount - 1 do
   begin
     readln(F, tempstr);
     stringgrid1.cells[x, y] := tempstr;
   end;
 closefile(f);
 ////
 assignfile(f, "\Diplom\Tarif\Zima\Tarif1");
 reset(f);
 readln(f, temp);
 stringgrid2.colcount := temp;
 readln(f, temp);
 stringgrid2.rowcount := temp;
 for X := 0 to stringgrid2.colcount - 1 do
   for y := 0 to stringgrid2.rowcount - 1 do
   begin
     readln(F, tempstr);
     stringgrid2.cells[x, y] := tempstr;
   end;
 closefile(f);

 for X := 1 to stringgrid1.colcount do
   for y := 1 to stringgrid1.rowcount do
    begin
      if Stringgrid1.Cells[x,y] = "1" then
      begin
       Edit2.Text:=Stringgrid2.Cells[x-1,y-1];
Вот тут
      end;

      if Stringgrid1.Cells[x,y] = "2" then  Edit3.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "3" then  Edit4.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "4" then  Edit5.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "5" then  Edit6.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "6" then  Edit7.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "7" then  Edit8.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "8" then  Edit9.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "9" then  Edit10.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "10" then  Edit11.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "11" then  Edit12.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "12" then  Edit13.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "13" then  Edit14.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "14" then  Edit15.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "15" then  Edit16.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "16" then  Edit17.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "17" then  Edit18.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "18" then  Edit19.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "19" then  Edit20.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "20" then  Edit21.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "21" then  Edit22.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "22" then  Edit23.Text:=Stringgrid2.Cells[x-1,y-1];
      if Stringgrid1.Cells[x,y] = "23" then  Edit24.Text:=Stringgrid2.Cells[x-1,y-1];
    end;
end;


 
Плохиш ©   (2006-11-17 10:57) [57]


> alex810 ©   (17.11.06 10:34) [47]


> Мне нужно чтобы во втором гриде вместо 1 на перво был цвет
> идентификатор которого соответствовал бы единице и все это
> рисовалось бы пр Create формы
.

Ой, дайте, я тоже здесь расслаблюсь :-))
Не пора ли уже почитать основы работы используемой ОС и системы разработки? В креате формы ничего не рисуется, для отрисовки объектов им(объектам) посылаются соответствующие сообщения, при получении которых, объект и должен позаботиться о своей отрисовки.


 
_RusLAN ©   (2006-11-17 10:59) [58]

И как это такое получается - 50 постов, а ни автор не понял что ему советуют, ни отвечающие не поняли что надо автору. Это надо уметь...


 
Сергей М. ©   (2006-11-17 11:00) [59]

Ему про фому, а он все про ерему)

Ты на [55] таки соизволишь ответить ?


 
Плохиш ©   (2006-11-17 11:01) [60]


> _RusLAN ©   (17.11.06 10:59) [58]
> И как это такое получается - 50 постов, а ни автор не понял
> что ему советуют, ни отвечающие не поняли что надо автору.

У автора талант :-)


 
Elen ©   (2006-11-17 11:01) [61]

Во-первых :

> Сохраняем в файле идентификатор цвета в гриде 1 и положение
> этого цвета

Для этого есть Stringgrid.row[i].Savetofile();

Во-вторых :
> Кликаем на гриде 2 и запоминаем начальную позицию выделения
>
> Отпускаем мышу и запоминаем конечную позицию выделения.
> В гриде 2 записываем цену которая указана в эдите. В гриде
> 1 записываем идентификатор цвета который соответсвтует цвету
> едита

Зачем такие сложности. Выделяй по нормальному Shift+click
И в-третьих так в чем проблема?


 
Elen ©   (2006-11-17 11:04) [62]


> _RusLAN ©   (17.11.06 10:59) [58]
>
> И как это такое получается - 50 постов, а ни автор не понял
> что ему советуют, ни отвечающие не поняли что надо автору.
>  Это надо уметь...

Терпение мой друг - общение это главное, а о чем... Да ладно, неважно.... ;)


 
alex810 ©   (2006-11-17 11:04) [63]

[55] Идентификатор нужен для хранения в файле и последующей прорисовке в гриде при необходимости.


 
alex810 ©   (2006-11-17 11:06) [64]


> Зачем такие сложности. Выделяй по нормальному Shift+click
> И в-третьих так в чем проблема?

Мне нужно чтобы выделить мышью. При закрытии программы прорисовка с грида пропадает а мне нужно чтобы при запуске программы прорисовка которая была при закрытии программы прорисовывалась все заново.


 
Сергей М. ©   (2006-11-17 11:07) [65]


> alex810 ©   (17.11.06 11:04) [63]


Ты вообще способен понять вопрос на русском языке ?)

Я не спрашиваю тебя, зачем он нужен, я спрашиваю зачем тебе нужем массив, дублирующий уже имеющуюся в эдитах инф-цию о цвете ?


 
alex810 ©   (2006-11-17 11:08) [66]


> Не пора ли уже почитать основы работы используемой ОС и
> системы разработки? В креате формы ничего не рисуется, для
> отрисовки объектов им(объектам) посылаются соответствующие
> сообщения, при получении которых, объект и должен позаботиться
> о своей отрисовки.

Я понимаю что не прорисовывалась у меня первый вопрос был как вызвать процедуру DrawCell при креате формы


 
Elen ©   (2006-11-17 11:09) [67]


> Мне нужно чтобы выделить мышью.

Ну дык а я о чем - нажал шифт и выделяй мушкой от...до.

Чесс слово - я так и до сих пор не понимаю цели всего этого


 
alex810 ©   (2006-11-17 11:10) [68]


> Я не спрашиваю тебя, зачем он нужен, я спрашиваю зачем тебе
> нужем массив, дублирующий уже имеющуюся в эдитах инф-цию
> о цвете ?

А что при необходимости не проще ли обратится к массиву цветов по идентификатору чем проверять какому едиту соответсвует этот идентификатор?


 
ASoft   (2006-11-17 11:10) [69]

>alex810 ©
коли пустили твой сабжевый вопрос побоку (точнее, оставили в сторонке), ответь, пожалуйста >Сергей М. ©   (17.11.06 11:07) [65]
а то точно, здесь кого-нибудь кондрат хватит


 
Elen ©   (2006-11-17 11:10) [70]


>  как вызвать процедуру DrawCell при креате формы

А это ничего не даст. При креате на экране ничего нет. Все паинты потом в Show


 
Плохиш ©   (2006-11-17 11:10) [71]


> как вызвать процедуру DrawCell при креате формы

Афигеть, и он начал свой пост со слов "Я понимаю", я рыдаю...
Какой смысл вызывать DrawCell при креате формы?


 
Плохиш ©   (2006-11-17 11:11) [72]


> Ну дык а я о чем - нажал шифт и выделяй мушкой от...до.

Как эротично.... :-)


 
Elen ©   (2006-11-17 11:12) [73]


> А что при необходимости не проще ли обратится к массиву
> цветов по идентификатору чем проверять какому едиту соответсвует
> этот идентификатор?

В Эдитах есть свойство tag. Туда и можно заложить твой иденты.

> а то точно, здесь кого-нибудь кондрат хватит

Привет Кондратию!


 
ASoft   (2006-11-17 11:12) [74]


> Я понимаю что не прорисовывалась у меня первый вопрос был
> как вызвать процедуру DrawCell при креате формы

щас придут Кетмарь и Процент, вот тогда поймешь ;)


 
ЮЮ ©   (2006-11-17 11:12) [75]


> При закрытии программы прорисовка с грида пропадает а мне
> нужно чтобы при запуске программы прорисовка которая была
> при закрытии программы прорисовывалась все заново.


Ты хоть раз приведёшь код этого злосчастного OnDrawCell, который до закрытия программы все красит как надо, а после, изверг, никак не хочет?


 
alex810 ©   (2006-11-17 11:12) [76]

ЛЮДИ Давайте я скину кому нибудь на мыло скриншот с объяснение что мне нужно. Может он более понятней сформирует вопрос чем я.


 
Elen ©   (2006-11-17 11:13) [77]


> Плохиш

Описка !!! 8D (надеюсь никому на ум не придет запятую в этом слове поставить...)


 
Плохиш ©   (2006-11-17 11:14) [78]


> Может он более понятней сформирует вопрос чем я.

100 Euro по предоплате за правильно сформулированный вопрос :-)


 
alex810 ©   (2006-11-17 11:14) [79]


> В Эдитах есть свойство tag. Туда и можно заложить твой иденты.

[73]
Я так и сделал


 
Elen ©   (2006-11-17 11:15) [80]


> ЛЮДИ Давайте я скину кому нибудь на мыло скриншот с объяснение
> что мне нужно. Может он более понятней сформирует вопрос
> чем я.

Только не мне!!! Я точно не пойму скрин - я уже ничего не понимаю... Привет Кондратик!



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

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.65 MB
Время: 0.081 c
15-1163334763
ProgRAMmer Dimonych
2006-11-12 15:32
2006.12.03
Судя по реакции гугла, вопрос сложный.


1-1160135462
Eugem
2006-10-06 15:51
2006.12.03
Как заставить приложение закрыть себя и сразу открыть снова?


15-1163093807
Мазут Береговой
2006-11-09 20:36
2006.12.03
Дрянь какая-то завелась


15-1163540555
PHPDeveloper
2006-11-15 00:42
2006.12.03
TV тюнер


15-1163676419
SerJaNT
2006-11-16 14:26
2006.12.03
PHP энд MySQL