На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
  
> Ширина и высота ячеек stringgrid вручную , Ширина и высота ячеек stringgrid вручную
    Подскажите такую вещь:
    как изменять вручную ширину столбцов или высоту строк когда в таблице Stringgrid отсутствуют фиксированные столбцы и фиксированные строки?
      Включить в Options goColSizing и goRowSizing и двигать мышью?
        без фиксированных строк и без фиксированных столбцов...
          Цитата 095 @
          ез фиксированных строк и без фиксированных столбцов...

          а о чем это говорит напомни мне, среды нет под рукой
            тут функциональность как и у экселя - потянуть можно только за фиксированные ячейки - A,B,C,D ...ZZZZ и тд
            если их нет - тянуть незачто...

            Добавлено
            проде поэксперементировал сам .. :

            ExpandedWrap disabled
              procedure TMainFRM.StringGrid3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
              var glc,i:integer;
              begin
                StringGrid3.Cursor:=crDefault;
                Panel2.Caption:=IntToStr(X)+','+inttostr(Y);
               
                //надо менять курсор на разделительных линиях в гриде
                if StringGrid3.GridLineWidth>0 then
                begin
                  glc:=0; //координата gridline;
                  for i:=0 to StringGrid3.ColCount-2 do
                  begin
                    glc:=glc+StringGrid3.ColWidths[i]+StringGrid3.GridLineWidth;
                    if (X>glc-1) and (X<glc+1) then
                    begin
                      StringGrid3.Cursor:=crHSplit;
               
                      //коррекция по 0 в минус и в плюс
                      GridCorr:=X;
               
                      //зафиксить тек ширину столбца его номер (глобальные перем)
                      GridColW1:=StringGrid3.ColWidths[i];
                      GridColW2:=StringGrid3.ColWidths[i+1];
                      GridCol1:=i;
                      GridCol2:=i+1;
               
                    end;
                  end;
               
                  {на будущее для строк
                  glc:=0; //координата gridline;
                  for i:=0 to StringGrid3.RowCount-2 do
                  begin
                    glc:=glc+StringGrid3.RowHeights[i]+StringGrid3.GridLineWidth;
                    if (Y>glc-1) and (Y<glc+1) then StringGrid3.Cursor:=crVSplit;
                  end;
                  }
                end;
               
                //пытаемся отобразить смещение от 0
                //сделать проверку на заползание в другие ячейки {!}
               
                if Panel2.Color=clBlue then //если нажата левая кн мыши
                begin
                  StringGrid3.ColWidths[GridCol1]:=GridColW1+(X-GridCorr);
                  StringGrid3.ColWidths[GridCol2]:=GridColW2-(X-GridCorr);
                end;
               
                if Panel2.Color=clRed then Panel2.Color:=clBlue;
              end;


            вроде работает)) подскажите plz может если где перезаморочено?
              ExpandedWrap disabled
                type
                TStringGrid  = class(Grids.TStringGrid)
                  procedure CalcSizingState(X, Y: Integer; var State: TGridState; var Index: Longint; var SizingPos, SizingOfs: Integer; var FixedInfo: TGridDrawInfo);override;
                end;
                 
                procedure TStringGrid.CalcSizingState;
                 
                  procedure CalcAxisState(const AxisInfo: TGridAxisDrawInfo; Pos: Integer;NewState: TGridState);
                  begin
                    // скопировано из Grids
                  end;
                 
                begin
                  inherited;
                  CalcAxisState(FixedInfo.Horz, X, gsColSizing);
                  CalcAxisState(FixedInfo.Vert, Y, gsRowSizing);
                end;
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0265 ]   [ 16 queries used ]   [ Generated: 3.05.24, 13:42 GMT ]