Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.12.2010, 19:30
whitehustle whitehustle вне форума
Прохожий
 
Регистрация: 18.12.2010
Сообщения: 17
Репутация: 12
По умолчанию Проблема со StringGrid

1) Допустим при запуске ячейки заполняются автоматичски, можно ли сделать, чтобы когда пользователь очищал ячейки, то они не становились пустыми, а оставался 0, например.

2) как сделать, чтобы при введении данных в СтрингГрид появлялся " | " сбоку, ну как в обычных текстовых редакторах.

3) ну и чтобы не выделял ячейку синим, при запуске, а то как-то не круто смотрится. тут чо то в инете нашел, но ладу дать не могу %)

хелп ми , пипл , плиз)
__________________
Новичок в этом деле.
Ответить с цитированием
  #2  
Старый 23.12.2010, 20:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

1) если там есть событие OnChange то сравниваешь текст, если пустота - то ставишь 0
2) не припомню в блокноте черточек слева но делается так же.
3) поставь фокус по дефолту куда-нить в другое место, мб поможет.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 23.12.2010, 20:22
whitehustle whitehustle вне форума
Прохожий
 
Регистрация: 18.12.2010
Сообщения: 17
Репутация: 12
По умолчанию

а где ончендж?
__________________
Новичок в этом деле.
Ответить с цитированием
  #4  
Старый 23.12.2010, 20:30
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

нету. Я неправильно сказал.
как очищаешь?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 23.12.2010, 20:49
whitehustle whitehustle вне форума
Прохожий
 
Регистрация: 18.12.2010
Сообщения: 17
Репутация: 12
По умолчанию

в ручную.
просто выходит так, что когда редактирую ячейку можно очистить полностью => ошибку выскакивает.
__________________
Новичок в этом деле.
Ответить с цитированием
  #6  
Старый 23.12.2010, 20:50
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вот так попробуй:
Код:
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  
Старый 23.12.2010, 21:07
whitehustle whitehustle вне форума
Прохожий
 
Регистрация: 18.12.2010
Сообщения: 17
Репутация: 12
По умолчанию

без изменений.

вот код, если это поможет

Код:
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  
Старый 23.12.2010, 21:12
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А откуда там пустое место? 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';
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #9  
Старый 23.12.2010, 21:17
whitehustle whitehustle вне форума
Прохожий
 
Регистрация: 18.12.2010
Сообщения: 17
Репутация: 12
По умолчанию

ну пустое место, если удалять значения, а надо сделать так, чтобы он не мог очистить ячейку.
ну в третем СГ там подсчеты результатов, поэтому все хорошо.
А в первых двух нужно убрать пустоты, чтобы ставил 0, когда удаляешь.
__________________
Новичок в этом деле.

Последний раз редактировалось whitehustle, 23.12.2010 в 22:48.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025