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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2014, 19:16   #21
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

begin
l:=TObjectList.create(free); //Список элементов
//Заполним грид
with StringGrid1 do
for i:=0 to RowCount-1 begin
for j:=0 to ColCount-1 begin
Cells[j,i]:=IntToStr(Random(5));
end;
end;

в begin тоже ошибки
alman12 вне форума Ответить с цитированием
Старый 17.11.2014, 19:19   #22
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

alman12, ну ёлкин дрын, первый раз циклы видишь? do говорит о чем то? Копипаста не прокатит, нужно хоть чуть-чуть самому думать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.11.2014, 20:03   #23
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

for i:=0 to l.Count-1 do if l[imax].cnt<l[i].cnt then imax:=i;

в imax тоже ощибка выдает
alman12 вне форума Ответить с цитированием
Старый 17.11.2014, 20:08   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну да. Писал с коленки, увы опечатки допустил. Нет мне, ф0шисту, прощения.
Цитата:
в imax тоже ощибка выдает
А ты описал эту переменную?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2014, 20:18   #25
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

for i:=0 to l.Count-1 do if l[imax].cnt<l[i].cnt then imax:=i;

cnt тоже ошибка
alman12 вне форума Ответить с цитированием
Старый 18.11.2014, 00:15   #26
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

что такой cnt ?
alman12 вне форума Ответить с цитированием
Старый 18.11.2014, 07:30   #27
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А это поле, в котором хранится по задумке количественная вхождений в массив.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.11.2014, 18:21   #28
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

ошибку выдает там

я нащел такой код но так выделяется все повторяющие строки
как сделать чтобы выделились толка ячейки в столбце
и как сделат чтобы выделились самые повторяющие

Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; vCol, vRow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 with (Sender as TStringGrid), Canvas do
  if (Objects[0, vRow] as TBoolObj).flg then
   begin
    Brush.Color:= clHighlight;
    Font.Color:= clWhite;
    FillRect(Rect);
TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[vCol, vRow]);
   end else
    begin
     Brush.Color:= Color;
     Font.Color:= Font.Color;
     FillRect(Rect);
     TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[vCol, vRow]);
    end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 i, b, c: integer;
 s: string;
begin
 with StringGrid1 do
  begin
   for i := 0 to rowcount-1 do
    (Objects[0, i] as TBoolObj).flg:= false;

    for i := 0 to rowcount-1 do
     begin
      s:= Cells[0, i];
      c:= 0;

      for b := 0 to rowcount-1 do
       if Cells[0, b] = s then Inc(c);

      if c > 1 then (Objects[0, i] as TBoolObj).flg:= true;
     end;

  Repaint;
 end; {with}
end;

Последний раз редактировалось Stilet; 18.11.2014 в 20:43.
alman12 вне форума Ответить с цитированием
Старый 18.11.2014, 21:49   #29
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

я нащел такой код но так выделяется все повторяющие строки
как сделать чтобы выделились толка ячейки в столбце
и как сделат чтобы выделились самые повторяющие

Код:


procedure TForm1.StringGrid1DrawCell(Sender: TObject; vCol, vRow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid), Canvas do
if (Objects[0, vRow] as TBoolObj).flg then
begin
Brush.Color:= clHighlight;
Font.Color:= clWhite;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[vCol, vRow]);
end else
begin
Brush.Color:= Color;
Font.Color:= Font.Color;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[vCol, vRow]);
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, b, c: integer;
s: string;
begin
with StringGrid1 do
begin
for i := 0 to rowcount-1 do
(Objects[0, i] as TBoolObj).flg:= false;

for i := 0 to rowcount-1 do
begin
s:= Cells[0, i];
c:= 0;

for b := 0 to rowcount-1 do
if Cells[0, b] = s then Inc(c);

if c > 1 then (Objects[0, i] as TBoolObj).flg:= true;
end;

Repaint;
end; {with}
end;
alman12 вне форума Ответить с цитированием
Старый 18.11.2014, 23:21   #30
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Какой настойчивый парень... Преподы наверное в восторге )

Вот смотри:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
  private
    st:TStringList; //Список частот значений в гриде
    smax:string;   //Значение с максимальной частотой
    { private declarations }

  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i,j,k:integer;
begin
 //Создаем список частот
 st:=TStringList.Create;
 with StringGrid1 do begin
  //Заполним Грид
   FixedRows:=0; FixedCols:=0;
   Align:=alClient;
   for i:=0 to RowCount-1 do begin
     for j:=0 to ColCount-1 do begin
      Cells[j,i]:=IntToStr(Random(5));
     end;
   end;

   //Составляем карту частот, помещая их в список
   for i:=0 to RowCount-1 do begin
     for j:=0 to ColCount-1 do begin
      k:=st.IndexOf(Cells[j,i]);
      if k<>-1 then st.Objects[k]:=TObject(integer(st.Objects[k])+1)
      else st.AddObject(Cells[j,i],TObject(1));
     end;
   end;

  //Находим самый частый
  j:=0;  smax:='';
  for i:=1 to st.Count-1 do begin
    if integer(st.Objects[i])>integer(st.Objects[j]) then j:=i;
  end;
  smax:=st[j]
 end;


end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
  with TStringGrid(Sender) do begin
   //Если в ячейке значение встречающееся чаще всех
   if Cells[aCol,arow]=smax then begin
     with Canvas do begin
      //Рисуем его отдельно
      Brush.Color:=clYellow;
      FillRect(aRect);
      TextOut(aRect.Left,aRect.Top,Cells[aCol,arow]);
     end;
   end;
  end;
end;

end.
Если и это не прояснит ситуацию, то мне в этой теме делать нечего...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос повторяющихся значений Artem_85 Microsoft Office Excel 6 07.11.2012 13:49
удаление из таблицы повторяющихся значений CodeNOT PHP 2 28.03.2011 12:01
Удаление повторяющихся значений в строке aimk0 Помощь студентам 7 11.10.2010 16:58
Подсчет повторяющихся значений поля JSilver БД в Delphi 9 04.03.2009 10:34
Поиск повторяющихся значений Flangini Microsoft Office Excel 23 22.02.2008 15:57