Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - StringGrid

Ответить
Настройки темы
Delphi - StringGrid

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте. Подскажите идею! Есть форма на которую из excel импортируются данные в StringGrig. Далее нужно чтобы данные фильтровались и оставались определенные значения. Например:
в StringGrid попало 100 номеров и суммы, нужно чтобы из всех номеров остались 2224455, 6664443, 7775554 со значениями сумм.

Отправлено: 06:39, 31-05-2015

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Как пример кода по кнопке
Код: Выделить весь код
  for j:= 1 to (Form1.StringGrid1.RowCount-1) do begin
    for i:= 1 to (Form1.StringGrid1.ColCount-1) do begin
      Form1.StringGrid1.Cells[i,j]:='wow';
    end;
  end;

  for j:= 2 to 3 do begin
    for i:= 2 to 2 do begin
      Form1.StringGrid1.Cells[i,j]:='non';
    end;
  end;
  Form1.StringGrid1.DeleteRow(2);
Т.е. доступ к ячейкам получается вполне простым.
Вопрос условия удаления.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 08:28, 31-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


просто может добавить какой то компонент, в котором перечислить нужные номера и сравнить их со stringGrid, которые совпадают посчитать сумму

просто вообще продвинуться не могу, по одному номеру получается
for i := 1 to St1.RowCount-1 do
if 777 = StrToint(St1.Cells[1, i]) then
Summ := Summ + StrToint(St1.Cells[2, i]);
Lbl1.Caption := intToStr(Summ);

а как группу, что то ума не хватает

т.е. мне важно посчитать сумму конкретных значений, а будут они удалятся из таблицы или останутся - это не имеет значения

Отправлено: 08:53, 31-05-2015 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Валентин_Будэйко@vk, периодически перечитываю ваше сообщение и все равно не могу его понять
Приведите толковый пример.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:58, 31-05-2015 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Хорошо, пробую.
Есть форма на ней компоненты StringGrid и 2 кнопки.
При нажатии на одну кнопку в компонент StringGrid загружаются данные из таблицы excel с телефонами и суммами потраченными при разговоре с этим номером. По идее при нажатии на вторую кнопку, программа должна из всего списка номеров выбрать определенные номера телефонов и сложить их суммы переговоров и результат отобразить в label. Далее могу написать код всей программы:

unit Unit1;

interface

uses
Windows, Messages, Math, ComObj, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleServer, ExcelXP, StdCtrls, Buttons, Grids;

type
TForm1 = class(TForm)
st1: TStringGrid;
btn1: TBitBtn;
lbl1: TLabel;
btn2: TButton;
lbl2: TLabel;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Excel: Variant;

implementation

{$R *.dfm}

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
try
Excel.Quit;
Excel:=Unassigned;
except
end;
CanClose:=True;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Application.WorkBooks.Add('c:\Temp\1.xls');
st1.Cells [0,0]:= 'Телефон:';
st1.Cells [1,0]:= 'Сумма:';

end;

procedure TForm1.btn1Click(Sender: TObject);
var
i,RowsCount : Integer;
begin
RowsCount := excel.ActiveSheet.UsedRange.Rows.Count;
for i:= 4 to RowsCount do
begin
st1.RowCount := RowsCount+1;
st1.Cells[0,i]:= Excel.cells[i,3].Value;
st1.Cells[1,i]:= Excel.cells[i,8].Value;
end;
end;


procedure TForm1.btn2Click(Sender: TObject);
var
summ: Real;
i: Integer;
begin
for i := 4 to St1.RowCount-1 do
begin

Summ := summ + StrTofloat(St1.Cells[1, i]);
end;
summ:=RoundTo(summ,-2);
lbl2.Visible := True;
Lbl2.Caption := FloatToStr(Summ);
end;


end.

так считает сумму по всем номерам

Отправлено: 15:01, 31-05-2015 | #5


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата Валентин_Будэйко@vk:
По идее при нажатии на вторую кнопку, программа должна из всего списка номеров выбрать определенные номера телефонов и сложить их суммы переговоров и результат отобразить в label »
Откуда берутся определенные номера телефонов?
Задаются и пишутся откуда куда?
Сумма считается индивидуально по номеру или за все номера сразу?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 16:26, 31-05-2015 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


номера берутся из списка импортируемого из excel. просто там 100 номеров, а нам нужно заплатить за номера которые числятся за нами, сумма считается для каждого номера. приведу пример:

79231577684 3,540000
79243452345 14,160000
79234320014 1,770000
79005427338 4,720000
79345627338 146,320000
79145566518 4,720000
79157841543 3,540000
79152486253 33,040000

например мне надо суммы номеров на 79157481543 и 79152486253

вообще в идеале, есть список номеров которые надо сравнить со всеми номерами которые импортируются из excel и при совпадении сложить суммы совпавших значений

Отправлено: 16:58, 31-05-2015 | #7


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Валентин_Будэйко@vk, честно говоря не хочется влезать в Delphi чтобы решать задачи подобного рода.
Попробуйте может использовать внутренние средства Excel для фильтрации необходимой информации.
Правда я не знаю, насколько измениться процесс импорта, но ИМХО в Excel решение этой задачи будет более элегантно. http://www.planetaexcel.ru/techniques/3/137/
----
Создайте еще один StringDrid в котором будут "лежать" все необходимые номера.
Далее двойным вложенным циклом просматривать каждый заданный номер по всей выгрузке.
Данных не так много, поэтому на прожорливый алгоритм можно прикрыть глаза.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 17:39, 31-05-2015 | #8


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Спасибо за ценную мысль, все получилось

Отправлено: 04:44, 01-06-2015 | #9


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата Валентин_Будэйко@vk:
Спасибо за ценную мысль, все получилось »
На здоровье. Заходите еще :)

Отправлено: 12:31, 01-06-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - StringGrid

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - C++ Builder - Таблица StringGrid Dark_Delphin Программирование и базы данных 1 14-03-2013 19:50
Delphi - Сравнение ячеек StringGrid Snake750 Программирование и базы данных 2 21-03-2010 09:32
Delphi - Раскраска ячеек StringGrid pirojok750 Программирование и базы данных 10 26-10-2009 17:26
Delphi - [решено] Обработка StringGrid noname_06 Программирование и базы данных 5 19-01-2009 16:39
Delphi - StringGrid в Delphi 6 LedWorm Программирование и базы данных 1 16-02-2004 08:02




 
Переход