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

Delphi Sources



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

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #121  
Старый 01.05.2008, 15:34
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
Button1.Enabled:=(Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '');
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
  #122  
Старый 01.05.2008, 15:43
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

The Shadow спасибо 8))
  #123  
Старый 01.05.2008, 16:45
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня еще один вопрос - можно ли поменять цвет формы на цвет, который ты хочешь - а не на те, которые имеются в Color?
  #124  
Старый 04.05.2008, 18:56
Аватар для Professor Farnsworth
Professor Farnsworth Professor Farnsworth вне форума
Прохожий
 
Регистрация: 19.04.2008
Сообщения: 42
Репутация: 10
По умолчанию

Цитата:
Сообщение от AndrYxo
У меня еще один вопрос - можно ли поменять цвет формы на цвет, который ты хочешь - а не на те, которые имеются в Color?
Два раза щелкни мышкой напротив свойства Color, выбери "Определить цвет" и установи любой цвет из гаммы.
  #125  
Старый 16.05.2008, 19:22
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Цитата:
Сообщение от Professor Farnsworth
Два раза щелкни мышкой напротив свойства Color, выбери "Определить цвет" и установи любой цвет из гаммы.
Спасибо - уже нашел - такую глазобойку преподше устроил - будет проверять и плакать... она меня достала жутко - уже ей надо что бы массивы все динамическими были, статические уже не в моде... помотгите, плиз, в динамический переести - ато я уже 2 часа сижу - и максимум добился того, что программа запускалась, но в грид данные не выводила... Спасибо...

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, AppEvnts;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label6: TLabel;
    ApplicationEvents1: TApplicationEvents;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  n:integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
a:array [0..19] of real;
P:real;
i:integer;
c,d:real;
  begin
  n:=strtoint(edit3.Text);
  stringgrid1.ColCount:=n;
  randomize;
  if n<=20 then
  for i:=0 to n-1 do
    begin
    a[i]:=random(50--50+1)-50;
    StringGrid1.Cells[i,0]:=FormatFloat('0.00',a[i]);
    end
    else ShowMessage('Количество элементов массива не удовлетворяет условию задачи');
  P:=1;
  c:=StrtoInt(Edit1.Text);
  d:=StrtoInt(Edit2.Text);
   if n<=20 then
  for i:=0 to n-1 do
  if (a[i]>0) and (a[i]>=c) and (a[i]<=d) then
  P:=P*a[i];
  Edit4.Text:= FormatFloat('0.00',P);
  end;

procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to n-1 do
StringGrid1.Cells[i,0]:=FormatFloat('  ',0);
Edit3.Clear;
Edit4.Clear;
Edit1.Clear;
Edit2.Clear;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
Form1.Show;
Form2.Close;
end;

procedure TForm2.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
Button1.Enabled:=(Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '');
end;

end.
  #126  
Старый 16.05.2008, 20:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Массив описываешь как Array Of Type;
При проходе по массиву используешь Low(Массив) и High(Массив).
Для установки длинный массива используешь SetLength(Массив,Новая_длинна).

Все. В остальном динамический массив от статического ничем не отличается.
  #127  
Старый 16.05.2008, 22:31
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

lmikle спасибо... буду так пробовать - просто двумерный массив перевел без проблем - а с одномерным проьблема небольшая.. ладно - разберусь думаю! Спасибо

Теперь у меня другая трабла - подскажите, плиз, как сделать что бы прога выдавала свое сообщение об ошибке когда в Edit вписываешь мусор всякий - например фф и т. д. или отрицательные числа- что бы только на положительные числа срабатывал?
  #128  
Старый 16.05.2008, 23:38
Олиська Олиська вне форума
Прохожий
 
Регистрация: 16.05.2008
Сообщения: 1
Репутация: 10
По умолчанию помогите!!!

пожалуйста!!!второй день ничего путного не выходит!!! двумерный динамический массив (nxn) задать генератором случайных чисел;запись во внешний фаил,чтение из файла,сортировка по возрастанию эл-тов
  #129  
Старый 17.05.2008, 10:04
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Теперь у меня другая трабла - подскажите, плиз, как сделать что бы прога выдавала свое сообщение об ошибке когда в Edit вписываешь мусор всякий - например фф и т. д. или отрицательные числа- что бы только на положительные числа срабатывал?
В событие edit-а ONKeyPress вписать
Код:
 
  case Key of '0'..'9':;
   else Key:=Chr(0);//сюда можно и сообщение об ошибке писать, но ИМХО это незачем
   end;
  #130  
Старый 17.05.2008, 10:17
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

MegaPiha спасибо... прикольно - сообщение и правда не нужно
  #131  
Старый 17.05.2008, 13:14
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

А вот у меня еще вопросик - а можно как-то сделать, что бы при этой процедуре на Edit еще и BackSpace работал?

case Key of '0'..'9':;
else Key:=Chr(0);
end;
  #132  
Старый 17.05.2008, 13:26
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Chr(8); {или 7 точно не помню}
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
  #133  
Старый 17.05.2008, 13:32
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
А вот у меня еще вопросик - а можно как-то сделать, что бы при этой процедуре на Edit еще и BackSpace работал?

case Key of '0'..'9':;
else Key:=Chr(0);
end;
Код:
  case key of '0'..'9', #8:;
  else key :=chr(0);
  end;
  #134  
Старый 17.05.2008, 14:47
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

MegaPiha, The Shadow спасибо 8)
  #135  
Старый 17.05.2008, 16:53
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от Олиська
пожалуйста!!!второй день ничего путного не выходит!!! двумерный динамический массив (nxn) задать генератором случайных чисел;запись во внешний фаил,чтение из файла,сортировка по возрастанию эл-тов

Можно сделать примерно так.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid3: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  nxn: array of array of integer;
  n,m:integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);//сохранение в файл
Var
   s :TStringlist;
   Str:String;
   i,j : Integer;
begin
 with TSaveDialog.Create(Owner) do
   begin
       DefaultExt:='.txt';
       Filter:= 'Файлы проекта|*.txt';
       if not Execute then exit;
       s:=TStringList.Create;
       s.Clear;
       For i:=1 to n do
       begin
           Str := '' ;
           For j:=1 to m do
               str:=str+IntToStr(nxn[j,i])+' ';
           s.Add(Str);
       end;
       S.SaveToFile(FileName);
   end;
   s.Free;
end;


procedure TForm1.Button2Click(Sender: TObject);//чтение из файла
var
   s :TStringlist;
   i,j, posy, posx: Integer;
   Str:String;
Begin
    with TOpenDialog.Create(Owner) do
    begin
       DefaultExt:='.txt';
       Filter:= 'файлы проекта|*.txt';
       if not Execute then exit;
       s:=TStringList.Create;
       S.LoadFromFile(FileName);
       For posy := 1 to S.Count do
       begin
           posx := 0;
           Str := '';
           For i := 1 to Length(S.Strings[posy-1]) do
           begin
              if S.Strings[posy-1][i] <> ' ' then
                  Str := Str + S.Strings[posy-1][i]
              else
              begin
                  StringGrid2.Cells[posx, posy-1] := Str;
                  Str := '';
                  inc(posx);
              end;
            end;

       end;
       S.Free;
    end;
    With StringGrid2 do begin
        colCount:=posx;
        RowCount:=posy;
        For i:=0 to posx-1 do
           ColWidths[i]:=Trunc(Width/posx);
    end;
    n:= StringGrid2.RowCount;
    m:=StringGrid2.ColCount;
    SetLength(nxn,m,n);
    For i:=0 to n-2 do
    For j:=0 to m-1 do
       nxn[i,j]:=StrToInt(StringGrid2.Cells[i,j]);

end;



procedure TForm1.Button4Click(Sender: TObject);//заполнение массива
Var i, j:integer;
begin
   if (Trim(Edit1.Text) <>'') and (Trim(Edit2.Text)<>'') then
   begin
      n:=StrToInt(Edit1.Text);
      m:=StrToInt(Edit2.Text);
      With StringGrid1 do begin
          ColCount:=n;
          RowCount:=m;
          For i:=0 to n-1 do
              ColWidths[i]:=Trunc(Width/n);
      end;
      SetLength(nxn,n+1,m+1);
      Randomize;
      For i:=1 to n do
        For j:=1 to m do
        begin
            nxn[i,j]:=random(10);
            StringGrid1.Cells[i-1,j-1]:=IntToStr(nxn[i,j]);
        end;
   end
   else
   ShowMessage('Не заполнена размерность массива!')
end;




procedure TForm1.Button3Click(Sender: TObject);//сортировка
var s,i,j,k:integer;
begin
    for j:=0 to n-1 do
    for k:=0 to m-2 do
       for i:=0 to m-k-2 do
         if nxn[i,j]>nxn[i+1,j] then
         begin
            S:=nxn[i,j];
            nxn[i,j]:=nxn[i+1,j];
            nxn[i+1,j]:=S;
         end;

   For i:=0 to n-2 do
    For j:=0 to m-1 do
       StringGrid3.Cells[i,j]:=IntToStr(nxn[i,j]);

   With StringGrid3 do begin
        colCount:=n-1;
        RowCount:=m;
        For i:=1 to colCount-1 do
           ColWidths[i]:=Trunc(Width/colCount);
    end;
end;

end.
Закрытая тема


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter