![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
1) Допустим при запуске ячейки заполняются автоматичски, можно ли сделать, чтобы когда пользователь очищал ячейки, то они не становились пустыми, а оставался 0, например.
2) как сделать, чтобы при введении данных в СтрингГрид появлялся " | " сбоку, ну как в обычных текстовых редакторах. 3) ну и чтобы не выделял ячейку синим, при запуске, а то как-то не круто смотрится. тут чо то в инете нашел, но ладу дать не могу %) хелп ми , пипл , плиз) |
|
#2
|
||||
|
||||
|
1) если там есть событие OnChange то сравниваешь текст, если пустота - то ставишь 0
2) не припомню в блокноте черточек слева но делается так же.3) поставь фокус по дефолту куда-нить в другое место, мб поможет. |
|
#3
|
|||
|
|||
|
а где ончендж?
![]() |
|
#4
|
||||
|
||||
|
нету. Я неправильно сказал.
как очищаешь? |
|
#5
|
|||
|
|||
|
в ручную.
просто выходит так, что когда редактирую ячейку можно очистить полностью => ошибку выскакивает. |
|
#6
|
||||
|
||||
|
Вот так попробуй:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol in [0..StringGrid1.FixedCols-1]) or (ARow in [0..StringGrid1.FixedRows-1]) then Exit; if Trim(StringGrid1.Cells[ACol,ARow]) = '' then StringGrid1.Cells[ACol,ARow] := '0' end; |
|
#7
|
|||
|
|||
|
без изменений.
вот код, если это поможет Код:
type matrix= array [0..2, 0..2] of real;
var
Form1: TForm1;
A, B, C: matrix;
i, j, m, n, l, k: byte;
s: real;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0, 0]:='0';
StringGrid1.Cells[0, 1]:='0';
StringGrid1.Cells[0, 2]:='0';
StringGrid1.Cells[1, 0]:='0';
StringGrid1.Cells[1, 1]:='0';
StringGrid1.Cells[1, 2]:='0';
StringGrid1.Cells[2, 0]:='0';
StringGrid1.Cells[2, 1]:='0';
StringGrid1.Cells[2, 2]:='0';
StringGrid2.Cells[0, 0]:='0';
StringGrid2.Cells[0, 1]:='0';
StringGrid2.Cells[0, 2]:='0';
StringGrid2.Cells[1, 0]:='0';
StringGrid2.Cells[1, 1]:='0';
StringGrid2.Cells[1, 2]:='0';
StringGrid2.Cells[2, 0]:='0';
StringGrid2.Cells[2, 1]:='0';
StringGrid2.Cells[2, 2]:='0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=2;
m:=2;
l:=2;
for i:=0 to n do
for j:=0 to m do A[i, j]:=StrToFloat(StringGrid1.Cells[j, i]);
for i:=0 to n do
for j:=0 to m do B[i, j]:=StrToFloat(StringGrid2.Cells[j, i]);
for i:=0 to n do
for j:=0 to l do
begin
s:=0;
for k:=0 to m do
s:=s+A[k,i]*B[j,k];
C[j,i]:=s;
end;
for i:=0 to n do
for j:=0 to m do
StringGrid3.Cells[i, j]:=FloatToStrf(C[j, i], fffixed,2,1);
end; |
|
#8
|
||||
|
||||
|
А откуда там пустое место? FloatToStrf(C[j, i], fffixed,2,1); может вернуть пустоту? Если так, то
Код:
... StringGrid3.Cells[i, j]:=FloatToStrf(C[j, i], fffixed,2,1); if StringGrid3.Cells[i, j]='' then StringGrid3.Cells[i, j]:='0'; |
|
#9
|
|||
|
|||
|
ну пустое место, если удалять значения, а надо сделать так, чтобы он не мог очистить ячейку.
ну в третем СГ там подсчеты результатов, поэтому все хорошо. А в первых двух нужно убрать пустоты, чтобы ставил 0, когда удаляешь. Последний раз редактировалось whitehustle, 23.12.2010 в 22:48. |