|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - StringGrid |
|
Delphi - StringGrid
|
Новый участник Сообщения: 5 |
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте. Подскажите идею! Есть форма на которую из excel импортируются данные в StringGrig. Далее нужно чтобы данные фильтровались и оставались определенные значения. Например:
в StringGrid попало 100 номеров и суммы, нужно чтобы из всех номеров остались 2224455, 6664443, 7775554 со значениями сумм. |
|
Отправлено: 06:39, 31-05-2015 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить 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); Вопрос условия удаления. |
------- Отправлено: 08:28, 31-05-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Сайт | Отправить 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 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Валентин_Будэйко@vk, периодически перечитываю ваше сообщение и все равно не могу его понять
Приведите толковый пример. |
------- Отправлено: 13:58, 31-05-2015 | #4 |
Новый участник Сообщения: 5
|
Профиль | Сайт | Отправить 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 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Валентин_Будэйко@vk:
Задаются и пишутся откуда куда? Сумма считается индивидуально по номеру или за все номера сразу? |
|
------- Отправлено: 16:26, 31-05-2015 | #6 |
Новый участник Сообщения: 5
|
Профиль | Сайт | Отправить 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 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Валентин_Будэйко@vk, честно говоря не хочется влезать в Delphi чтобы решать задачи подобного рода.
Попробуйте может использовать внутренние средства Excel для фильтрации необходимой информации. Правда я не знаю, насколько измениться процесс импорта, но ИМХО в Excel решение этой задачи будет более элегантно. http://www.planetaexcel.ru/techniques/3/137/ ---- Создайте еще один StringDrid в котором будут "лежать" все необходимые номера. Далее двойным вложенным циклом просматривать каждый заданный номер по всей выгрузке. Данных не так много, поэтому на прожорливый алгоритм можно прикрыть глаза. |
------- Отправлено: 17:39, 31-05-2015 | #8 |
Новый участник Сообщения: 5
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо за ценную мысль, все получилось
|
Отправлено: 04:44, 01-06-2015 | #9 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Валентин_Будэйко@vk:
|
|
Отправлено: 12:31, 01-06-2015 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|