Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2009, 23:04   #1
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию StrinGrid в Delphi

Всем доброго времени суток... Хочу написать програмку что-то типо "Учёта личных финансов".... Добавление, удаление, пронумеровку строк столбцов, сохранение, загрузка сделал... Не могу догадаться как можно сделать чтоб пользователь вносил сам числа в StrinGrid!?!? Как сделать чтоб складывалась каждая строчка и записывалась в последнию ячейку!??! И на будущее.. Если в ячейке написана ссылка на сайт пользователем программы, то как её превратить в гиперсылку (т.е. при нажатии на ячейку с ссылкой Delphi переходила на этот сайт)?!?!
TaYgA вне форума Ответить с цитированием
Старый 14.10.2009, 23:07   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Может попробовать использовать компонент TF1Book вместо TStringGrid?
Arigato вне форума Ответить с цитированием
Старый 15.10.2009, 08:26   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

По мне так лучше создать базу данных, работать удобнее, и возможноестей больше. Вдруг захотите потом какую нибудь выборку сделать или ещё что нибудь
SERG1980 вне форума Ответить с цитированием
Старый 16.10.2009, 17:12   #4
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Я новичёк, с базой данных ещё не работал и не представляю как.... А через StrinGrid не возможно так сделать?!
TaYgA вне форума Ответить с цитированием
Старый 16.10.2009, 20:23   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Сделать возможно Но немного геморно, а для новичка (ИМХО) трудновато)))

Цитата:
Не могу догадаться как можно сделать чтоб пользователь вносил сам числа в StrinGrid!?!?
Немного не понял. В Object Inspector для StringGrid есть раздел Options. В них поставьте Editing в true
Цитата:
Как сделать чтоб складывалась каждая строчка и записывалась в последнию ячейку!??!
В цикле
Например пишу сюда, сам еще проверишь:
Код:
for i := 1 to StringGrid1.RowCount do
  sum := sum StrToInt(StringGrid1.Cells[1, i]) + StrToInt(StringGrid1.Cells[1, i+1]); // тут поставишь свои координаты
StringGrid1.Cells[1, {тут нужная ячейка}] := IntToStr(sum) + 'руб.';
Цитата:
И на будущее.. Если в ячейке написана ссылка на сайт пользователем программы, то как её превратить в гиперсылку (т.е. при нажатии на ячейку с ссылкой Delphi переходила на этот сайт)?!?!
Ну как то так: (опять же сам проверь)
Например в столбце с номером 10 будут ссылки
Код:
  if StringGrid1.Selection.Left = 10 then
    if StringGrid1.Cells[10, StringGrid1.Selection.Top] <> '' then
      WinExec(PChar(StringGrid1.Cells[10, StringGrid1.Selection.Top]), SW_NORMAL);
По идее это должно работать, но у меня не открывает страницу, мож кто подскажет ))
psycho-coder вне форума Ответить с цитированием
Старый 16.10.2009, 21:57   #6
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

psycho-coder, большое вам спасибо за помощь

Если в ячейке написана ссылка на сайт пользователем программы, то как её превратить в гиперсылку (т.е. при нажатии на ячейку с ссылкой Delphi переходила на этот сайт)?!?!
Код:
  if StringGrid1.Selection.Left = 10 then
    if StringGrid1.Cells[10, StringGrid1.Selection.Top] <> '' then
      WinExec(PChar(StringGrid1.Cells[10, StringGrid1.Selection.Top]), SW_NORMAL);
Так не получается

Последний раз редактировалось Stilet; 19.10.2009 в 08:37.
TaYgA вне форума Ответить с цитированием
Старый 18.10.2009, 22:42   #7
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот нашел, держи:
Код:
  if StringGrid1.Selection.Left = 10 then
    if StringGrid1.Cells[10, StringGrid1.Selection.Top] <> '' then
      ShellExecute(0, 'OPEN', PChar(StringGrid1.Cells[10, StringGrid1.Selection.Top]), '', '', SW_NORMAL);
psycho-coder вне форума Ответить с цитированием
Старый 19.10.2009, 08:33   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Добавление, удаление, пронумеровку строк столбцов,
Вот вставка, удаление строк и колонок:
Код:
unit GridFunc;

interface

uses
  Sysutils, WinProcs, Grids;

procedure InsertRow(Sender: TStringGrid; ToIndex: Longint);
procedure DeleteRow(Sender: TStringGrid; FromIndex: Longint);
procedure InsertColumn(Sender: TStringGrid; ToIndex: Longint);
procedure DeleteColumn(Sender: TStringGrid; FromIndex: Longint);

implementation

type
  TCSGrid = class(TStringGrid)
  private
  public
    procedure MoveRow(FromIndex, ToIndex: Longint);
    procedure MoveColumn(FromIndex, ToIndex: Longint);
  end;

procedure TCSGrid.MoveRow(FromIndex, ToIndex: Longint);
begin
  RowMoved(FromIndex, ToIndex); { Защищенный метод TStringGrid }
end;

procedure TCSGrid.MoveColumn(FromIndex, ToIndex: Longint);
begin
  ColumnMoved(FromIndex, ToIndex); { Защищенный метод TStringGrid }
end;

procedure InsertRow(Sender: TStringGrid; ToIndex: Longint); //вставка строки
var
  xx, yy: Integer;
begin
  if ToIndex >= 0 then
    with TCSGrid(Sender) do
      if (ToIndex <= RowCount) then
      begin
        RowCount := RowCount + 1;
        xx := RowCount - 1;
        for yy := 0 to ColCount - 1 do
        begin
          Cells[yy, xx] := ' ';
          ObJects[yy, xx] := nil;
        end;
        if ToIndex < RowCount - 1 then
          MoveRow(RowCount - 1, ToIndex);
      end
      else
        MessageBeep(0)
    else
      MessageBeep(0);
end;

procedure DeleteRow(Sender: TStringGrid; FromIndex: Longint); //удаление строки
begin
  if FromIndex > l;
  = 0 then
    with TCSGrid(Sender) do
      if (RowCount > 0) and (FromIndex < RowCount) then
      begin
        if (FromIndex < RowCount - 1) then
          MoveRow(FromIndex, RowCount - 1);
        Rows[RowCount - 1].Clear;
        RowCount := RowCount - 1;
      end
      else
        MessageBeep(0)
    else
      MessageBeep(0);
end;

procedure InsertColumn(Sender: TStringGrid; ToIndex: Longint); //вставка колонки
var
  xx, yy: Integer;
begin
  if ToIndex >= 0 then
    with TCSGrid(Sender) do
      if (ToIndex <= ColCount) then
      begin
        ColCount := ColCount + 1;
        xx := ColCount - 1;
        Cols[xx].BeginUpdate;
        for yy := 0 to RowCount - 1 do
        begin
          Cells[xx, yy] := ' ';
          ObJects[xx, yy] := nil;
        end;
        Cols[xx].EndUpdate;
        if ToIndex < ColCount - 1 then
          MoveColumn(ColCount - 1, ToIndex);
      end
      else
        MessageBeep(0)
    else
      MessageBeep(0);
end;

procedure DeleteColumn(Sender: TStringGrid; FromIndex: Longint); //удаление колонки
begin
  if FromIndex >= 0 then
    with TCSGrid(Sender) do
      if (ColCount > 0) and (FromIndex < ColCount) then
      begin
        if (FromIndex < ColCount - 1) then
          MoveColumn(FromIndex, ColCount - 1);
        Cols[ColCount - 1].Clear;
        ColCount := ColCount - 1;
      end
      else
        MessageBeep(0)
    else
      MessageBeep(0);
end;

end.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.10.2009, 17:17   #9
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Спасибо за помощь
TaYgA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StrinGrid Настенька..Блонди Общие вопросы Delphi 2 15.08.2009 16:45
Задача со StrinGrid-ом artemavd Общие вопросы Delphi 10 28.07.2009 16:23
Печать Stringrid в FastReport LIEN Компоненты Delphi 2 25.05.2009 11:18
C++. Проблема с раскидкой текста по ячейкам StrinGrid -=CrasH=- Помощь студентам 1 20.04.2009 13:46
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43