Igor Leonne Postado Março 9, 2009 Denunciar Share Postado Março 9, 2009 Minha duvida e bem simples de explicar, mas complicada de resolver.Tenho um stringGrid, cada celula suporta um valor, mas eu preciso mudar isso.Quando mando uma celula do meu grid receber um valor, ela substitui o valor anterior, mas o que eu preciso e que ele mantenha os dois valores juntos.Exemplo:Suponhamos que isto seja uma celula | |aki tenho minha celula | < X | dentro dela preciso de dois valores juntos que seriam o 'X' e o '<'.Gostaria de uma ajuda de como fazer isso.Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William - TI Postado Março 9, 2009 Denunciar Share Postado Março 9, 2009 Caro amigo Sou novo por aqui mais se emtendi bem sua pergunta é so fazer assimStringGrid1.Cells[stringGrid1.Col,StringGrid1.Row] :=StringGrid1.Cells[stringGrid1.Col,StringGrid1.Row] +"texto". onde testo e o valor que você deve inserio...qualquer duvida poste ai....te mais... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Igor Leonne Postado Março 9, 2009 Autor Denunciar Share Postado Março 9, 2009 Exatamente meu chapa!Gostaria de tirar mais uma duvida contigo, pois quando faço isso os valores fikm juntos assim:|>x |gostaria de que quando estivesse apenas um valor, ele fiksse centralizado:| X |e quando tivesse doiis fiksse assim| > X | com espaço, assim evita confusaosabe alguma maneira de fazer isso?Agradeço a resposta anterior.ahhjá cosegui, usei o espaço mesmohehehePoderia me dizer como centralizar o width e heigth da celula?agradeço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Moraes Postado Março 10, 2009 Denunciar Share Postado Março 10, 2009 {Use esta função para centralizar strings, informe a ela a string que deseja centralizar e a quantidade de colunas contadas.}Function alinhaC(s:string;n:integer):string; // Centraliza uma string em um espaço determinado var Str:String; L:byte; begin str :=''; if n < Length(s) then begin Result := ''; Exit; end; l:=(n-Length(S)) div 2; while l > 0 do begin str:=str+' '; dec(l); end; for l:=1 to length(S) do begin str := str+s[L]; end; Result := str; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 10, 2009 Denunciar Share Postado Março 10, 2009 Eder Moraes, em se tratando de desenho do texto, em modo gráfico, onde os caracteres tem larguras diferentes, este tipo de alinhamento não é apropriado. Ele funciona bem quando você está imprimindo em modo caracter (como, nas matriciais).A função abaixo é genérica (você pode pô-la em uma unit de utilidades), centraliza o texto verticalmente e permite que você defina qual o alinhamento horizontal desejado:// procedimento para cálculo e desenho das células procedure DrawAligned(Grid :TObject; aCol, aRow :Integer;Rect :TRect; Alignment :TAlignment); var XOffset, YOffset, RectWidth :SmallInt; Text :String; begin with TStringGrid(Grid) do begin Text := Cells[aCol, aRow]; // desenhando o retângulo (célula) Canvas.Pen.Color := clBtnShadow; // cor das linhas Canvas.Brush.Style := bsSolid; with Rect do Canvas.Rectangle(Left -1, Top -1, Right +1, Bottom +1); // preparação do alinhamento horizontal RectWidth := Rect.Right -Rect.Left; case Alignment of taLeftJustify: XOffset := Rect.Left +2; taCenter : XOffset := Rect.Left +(RectWidth -Canvas.TextWidth(Text)) div 2; taRightJustify: XOffset := Rect.Left +(RectWidth -Canvas.TextWidth(Text)) -3; end; // preparação do alinhamento vertical YOffset := Rect.Top +(((Rect.Bottom -Rect.Top) -Canvas.TextHeight('Lj')) div 2); // desenhando o texto na célula Canvas.Brush.Style := bsClear; Canvas.TextRect(Rect, XOffset, YOffset, Text); end; end; Para usá-la, no evento OnDrawCell do TStringGrid, você faz a chamada passando os parâmetros necessários. Digamos que temos 4 colunas e que elas possuem alinhamentos diferentes, então, programamos o evento para testar a couna e desenhá-la conforme desejado: procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin case ACol of 0 : DrawAligned(Sender, ACol, ARow, Rect, taCenter); // centralizado 1, 2 : DrawAligned(Sender, ACol, ARow, Rect, taLeftJustify); // alinhado a esquerda 3 : DrawAligned(Sender, ACol, ARow, Rect, taRightJustify); // alinhado a direita end; end;Se não esqueci de nada, é isto.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William - TI Postado Março 10, 2009 Denunciar Share Postado Março 10, 2009 Desculpa a demora amigo para responder mais segue as dicas do nossos amigos Micheus ou Eder que vai dar tudo certo, boa Sorte até mais. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Igor Leonne
Minha duvida e bem simples de explicar, mas complicada de resolver.
Tenho um stringGrid, cada celula suporta um valor, mas eu preciso mudar isso.
Quando mando uma celula do meu grid receber um valor, ela substitui o valor anterior, mas o que eu preciso e que ele mantenha os dois valores juntos.
Exemplo:
Suponhamos que isto seja uma celula | |
aki tenho minha celula
| < X | dentro dela preciso de dois valores juntos que seriam o 'X' e o '<'.
Gostaria de uma ajuda de como fazer isso.
Obrigado
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.