![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Atreides |
![]()
Сообщение
#1
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Вопрос - столкнулся с задачей выравнивания в ячейках компонента AdvStringGrid, при этом нужно активировать свойство переноса слов на новые строки (свойство WordWrap:=true;) , чтобы умещались слова в заданную длину столбца и строки были высотой с текст в них.. Получается выравнивать по центру и строки с высотой выровнять, но текст по вертикали не ровняется, как быть? Событие ОнДроу не нашел ((
Код procedure TfrmRabot.ReBuildGrid; const DefaultRowHeight = 64; FirstRowHeight = 32; procedure AddItem(Kod, IsSogl: Integer); var tmp: Integer; begin tmp := Length(rabotArr); SetLength(rabotArr, tmp + 1); rabotArr[tmp].Kod := Kod; rabotArr[tmp].IsSogl := IsSogl; end; var row: Integer; begin isChanged := False; AddItem(-1, -1); sgRabot.ClearAll; sgRabot.GridLineColor := clBlack; sgRabot.GridFixedLineColor := clBlack; sgRabot.ColCount := 5; sgRabot.FixedRows := 1; sgRabot.FixedCols := 0; sgRabot.VAlignment := vtaCenter; sgRabot.DefaultRowHeight := DefaultRowHeight; sgRabot.RowHeights[0] := FirstRowHeight; sgRabot.Cells[0, 0] :='Код работы'; sgRabot.Alignments[0, 0] := taCenter; sgRabot.ColWidths[0] := 90; sgRabot.WordWraps[0, 0] := False; sgRabot.Cells[1, 0] :='Наименование работы'; sgRabot.Alignments[1, 0] := taCenter; sgRabot.ColWidths[1] := 380; sgRabot.WordWraps[1, 0] := False; sgRabot.Cells[2, 0] :='Наименование группы'; sgRabot.Alignments[2, 0] := taCenter; sgRabot.ColWidths[2] := 300; sgRabot.WordWraps[2, 0] := False; sgRabot.Cells[3, 0] :='Ремонт / замена'; sgRabot.Alignments[3, 0] := taCenter; sgRabot.ColWidths[3] := 80; sgRabot.WordWraps[3, 0] := True; sgRabot.Cells[4, 0] :='Согласовано / запрещено'; sgRabot.Alignments[4, 0] := taCenter; sgRabot.ColWidths[4] := 100; sgRabot.WordWraps[4, 0] := True; sgRabot.Multilinecells:=true; sgRabot.WordWrap:=true; DM.GetRabot; sgRabot.RowCount := DM.qryRabot.RecordCount + 1; row := 1; while not DM.qryRabot.Eof do begin sgRabot.Cells[0, row]:= DM.qryRabot.FieldByName('Nomer').AsString; sgRabot.Alignments[0, row] := taCenter; sgRabot.Cells[1, row]:= DM.qryRabot.FieldByName('Name_Rab').AsString; sgRabot.Alignments[1, row] := taLeftJustify; sgRabot.WordWraps[1, row] := True; sgRabot.Cells[2, row]:= DM.qryRabot.FieldByName('Name_Group').AsString; sgRabot.Alignments[2, row] := taLeftJustify; sgRabot.WordWraps[2, row] := True; if DM.qryRabot.FieldByName('Priznak_Rem').AsInteger = 1 then sgRabot.Cells[3, row] := 'Ремонт' else sgRabot.Cells[3, row] := 'Замена'; sgRabot.Alignments[3, row] := taCenter; if DM.qryRabot.FieldByName('Priznak_Sol').AsInteger = 1 then sgRabot.Cells[4, row] := 'Согласовано' else sgRabot.Cells[4, row] := 'Запрещено'; sgRabot.Alignments[4, row] := taCenter; AddItem( DM.qryRabot.FieldByName('Kod').AsInteger, DM.qryRabot.FieldByName('Priznak_Sol').AsInteger ); sgRabot.AutoSizeRow(row); Inc(row); DM.qryRabot.Next; end; DM.qryRabot.Close; end; -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
![]() ![]() |
Atreides |
![]()
Сообщение
#2
|
![]() Ветеран Броуновского Движения ![]() ![]() ![]() Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Дурная голова кривым рукам покоя не дает ((
Еще вопрос, как запретить события он клик на всех ячейках кроме первого столбца. И если есть событие OnClick ячейки, то закрасить всю строку. Сделал так, но нажимается везде и везде прокрашивается только ячейка OnClick, при чем любая. Код procedure TfrmFrom1.AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const //здесь определяем Ваш цвет. Так же можно использовать цвета по умолчанию. clPaleGreen = TColor($CCFFCC); var grid:TAdvStringGrid; s: string; r :TRect; dx, dy,i: integer; begin if (gdFocused in State) then begin AdvStringGrid1.Canvas.Brush.color := clPaleGreen end else AdvStringGrid1.Canvas.Brush.Color := clWindow; if (ARow > 0) and (ACol=0)then begin AdvStringGrid1.Canvas.FillRect(Rect); AdvStringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, AdvStringGrid1.Cells[ACol, ARow]); end; begin grid:=Sender as TAdvStringGrid; s:=grid.Cells[ACol, ARow]; r:=Rect; if ( Arow>=0 ) and ( ACol>=0 ) then begin grid.Canvas.FillRect(Rect); DrawText (grid.Canvas.Handle, s, Length(s), r, DT_CENTER or DT_WORDBREAK or DT_CALCRECT); dx:=((Rect.Right - Rect.Left) - (r.Right - r.Left)) div 2; dy:=((Rect.Bottom - Rect.Top) - (r.Bottom - r.Top)) div 2; offsetRect(r,dx,dy); DrawText (grid.Canvas.Handle, s, Length(s), r, DT_CENTER or DT_WORDBREAK); end else begin grid.Canvas.FillRect(Rect); DrawText (grid.Canvas.Handle, s, Length(s), r, DT_WORDBREAK or DT_CALCRECT); dx:=1; dy:=((Rect.Bottom - Rect.Top) - (r.Bottom - r.Top)) div 2; offsetRect(r, dx, dy); DrawText (grid.Canvas.Handle, s, Length(s), r, DT_WORDBREAK); end; end; end; Сообщение отредактировано: Atreides - 15.03.2012 12:10 -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
![]() ![]() |
![]() |
Текстовая версия | 12.07.2025 1:54 |