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

Вниз

Ещё одна проблема с StringGrid   Найти похожие ветки 

 
Partos   (2004-06-25 11:46) [0]

Все ещё раз приветы....

Вобщем у меня есть всё тот же Стринггрид.И он не умещаеться в форму полностью.Соответственно в нём появляеться скролинг.Я в данном стринггриде также выставил свойство goRowSelect и теперь при перемещении по стринггриду выделяеться не ячейка а вся строка.

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

Теперь проблема:

Запускаю приложение.Прокручиваю скролинг и кликаю на последней ячейке...Символ заносится, всё нормально!. Но при переходе на другую строку скролинг прокручивается  в самое начало (я так понмаю это из-за goRowSelect=true). А если пользователь кликнул на том же последем столбце только уже другой строки, то он пока заново не проскролит то и  не увидит что изменилась последняя ячейка уже другой строки.А это не дела!Очень неудобно!!!Так же нельзя сделать изменение подряд в нескольких строках в одном и том же столбце если столбцы в конце стринггрида!Каждый раз придёться прокручивать скролинг....Пользователи меня сожрут!!! Уже как-то странно посматривают на мою ляшку!СПАСИТЕ!!!!Я ещё молодой!!!

Со скролингом я никогда не работал! Подскажите плиз как сделать чтоб и goRowSelect=true осталось и при переходе на другую строчку скролинг не прокручивался в начало а оставался на месте...Вобщем если кто-нибудь знает как на ёлку залезть и попу не ободрать-кричите...


 
MetalFan ©   (2004-06-25 11:53) [1]

код... в студию


 
AlexG ©   (2004-06-25 11:56) [2]

как на ёлку залезть и попу не ободрать-кричите...
подгузник и вперед!

Возможно, нужно самому скролить стргрид...


 
Леприкон ©   (2004-06-25 12:02) [3]


procedure TForm1.SGDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 with SG do
   if (ACol>FixedCols-1) and (ARow>FixedRows-1) then
     if ARow=Row then
       begin
         Canvas.Brush.Color:=clSilver;
         Canvas.TextRect(Rect,Rect.Left,Rect.Top,Cells[ACol,ARow]);
       end
     else
       begin
         Canvas.Brush.Color:=Color;
         Canvas.TextRect(Rect,Rect.Left,Rect.Top,Cells[ACol,ARow]);
       end;
end;

procedure TForm1.SGSelectCell(Sender: TObject; ACol, ARow: Integer;
 var CanSelect: Boolean);
begin
 SG.Invalidate;
end;


 
Леприкон ©   (2004-06-25 12:04) [4]

...и goRowSelect убери


 
MetalFan ©   (2004-06-25 12:04) [5]


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

кажи обработчик


 
AlexSV   (2004-06-25 12:30) [6]

смотри у StringGrid"a LeftCol, TopRow, OnTopLeftChanged


 
Partos   (2004-06-25 12:42) [7]


> MetalFan ©   (25.06.04 12:04) [5]
>
> кажи обработчик


procedure TForm1.SGSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
if(ACol=9) then
  if StringGrid1.Cells[ACol,ARow]="" then
                              StringGrid1.Cells [ACol,ARow]:="V"
  else StringGrid1.Cells[ACol,ARow]:="";
end;


 
MetalFan ©   (2004-06-25 12:57) [8]


> Но при переходе на другую строку скролинг прокручивается
>  в самое начало (я так понмаю это из-за goRowSelect=true).

правильно понимаешь)
сделай как в [3],[4]
или "растяни" грид так, чтобы не было горизонтальнго сролла


 
MetalFan ©   (2004-06-25 13:07) [9]

или примерно так:

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
 ARow: Integer; var CanSelect: Boolean);
begin
 if aRow >= StringGrid1.FixedRows then
 begin
 if(aCol=pred(StringGrid1.ColCount)) then
 begin
   if StringGrid1.Cells[aCol,aRow]="" then
     StringGrid1.Cells [aCol,aRow]:="V"
   else
     StringGrid1.Cells[aCol,aRow]:="";
     FLastLeftCol := StringGrid1.LeftCol;
   end
   else
     FLastLeftCol :=  -1;
 end;
end;

procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
begin
 if FLastLeftCol <> -1 then
 begin
   StringGrid1.LeftCol := FLastLeftCol;
   FLastLeftCol := -1;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FLastLeftCol := -1;
end;


 
Partos   (2004-06-25 13:14) [10]

Леприкон!!! Круто!!!Ты мне очень помог!!! Теперь я не буду страдать от пыток этих безумных пользователей с их вечно голодными взглядами! Моя ляшка, моя молодость и половая жизнь спасены!! :)Я не буду хромать и может ещё ни одна подруга посмотрит на меня ;)

Только если можешь - объясни мне зачем вот это:
if (ACol>FixedCols-1) and (ARow>FixedRows-1) then

Почему мы применяем цвет только к тем ячейкам, которые выходят за FixedCols-1 и FixedRows-1?...Немножко я вот тут не понимаю! А так конечно классный алгоритм! Я не думал что всё так легко!


 
Леприкон ©   (2004-06-25 13:24) [11]

Это проверка на фиксированные ячейки. Надеюсь, ты понял, что этим кодом ты берёшь на себя ответственность за внешний вид редактируемых ячеек (или тех, которые можно "выбрать"). Однако, я посчитал лишним брать на себя ответственность за фиксированные ячейки. Пусть их StringGrid рисует, как сам умеет.
Вот такой я частичноответственный. :))

PS:Очень рад за твою ляшку и половую жизнь.



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
4-1085854199
DoG
2004-05-29 22:09
2004.07.11
Передача файлов !


3-1086685053
serg128
2004-06-08 12:57
2004.07.11
Как динамически добавить поле типа Lookup в TClientDataSet?


1-1088486970
kvictor
2004-06-29 09:29
2004.07.11
Управление диаграммой Excel.


1-1088510769
MadMax
2004-06-29 16:06
2004.07.11
XML-RPC проблемы с загрузкой SSL библиотек


4-1086092265
Андрей Сенченко
2004-06-01 16:17
2004.07.11
К вопросу по ALT-F4 и прочем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский