![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
На форме расположен компонент memo и несколько кнопок.Как правильно сделать отдельную процедуру в которой будет обрабатываться очистка memo и например вызваться вывод текста?
например есть процедура Код:
procedure TForm1.Button1Click(Sender: TObject); var begin memo1.Clear; memo1.Lines[0]:='парам'; end; Код:
memo1.Clear; memo1.Lines[0]:='парам'; в учебниках пока что не нашёл ответа. |
|
#2
|
||||
|
||||
|
Примерно так:
Код:
TForm1 = class(TForm)
...
public
procedure MemoClear;
end;
procedure TForm1.MemoClear;
begin
memo1.Clear;
memo1.Lines[0]:='парам';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MemoClear;
end; |
|
#3
|
|||
|
|||
|
Спасибо,всё работает!Вы мне можете посоветовать хорошую книгу на русском,купил Флёнова "библию delphi",но иногда бывает её мало или не полно в ней что то отражено.
|
|
#4
|
||||
|
||||
|
Для меня лучшей книгой было F1 и исходный код Дельфи. Бумажные книги помогли мало.
|
|
#5
|
|||
|
|||
|
вот такой вариант тоже будет работать.
Иногда удобно запускать одну и ту же процедуру от нескольких кнопок. Здесь двум кнопкам назначен один и тот же обработчик который вызавает процедуру очистки. Код:
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure ButtonsClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure MemoClear(Sender:TObject);
begin
with Form1 do
begin
memo1.Clear;
if Sender=Button1 then memo1.Lines[0]:='Нажата кнопка 1'
else if Sender=Button2 then memo1.Lines[0]:='Нажата кнопка 2';
end;
end;
procedure TForm1.ButtonsClick(Sender: TObject);
begin
MemoClear(Sender);
end; |
|
#6
|
|||
|
|||
|
ок! ещё вопрос возник по ходу написания.я все эти процедуры описываю в одном Unit1 например,как сделать я могу обратится к ней (memo1 ) в другом Unit2? Простое прописывание этой процедуры - делфи ругается что memo1 не определена.как на неё сослаться в другом unit.
|
|
#7
|
|||
|
|||
|
Как вриант можете написать: "Имя_формы.компонент"
Можете в процедуру/функцию передать по примеру Код:
procedure ShowMatrInSG(const M:TMatr;nCol,nRow:integer;SG:TStringGrid); Код:
ShowMatrInSG(M,nCol,nRow,SG) |
|
#8
|
|||
|
|||
|
для этого надо сделать 2 вещи
1.- в модуле Unit2 сделать ссылку на модуль Unit1 Код:
implementation
uses Unit1во вторых в модуле Unit1 надо функцию ClearMemo определить в интерфейсном разделе Код:
unit1 interface ClearMemo(Sender:TObject); теперь ты из модуля Unit2 можешь вызвать функцию ClearMemo, определенную в модуле Unit1 Замечение Старайся избегать циклических ссылок (модуль Unit1 ссылается на Unit2, а модуль Unit2- на Unit1). В крайнем случае прописывай их в разделе implementation Но при этом может получиться что компиляция программы будет зависеть от порядка в котором перечислены модули в файле .dpr |
|
#9
|
|||
|
|||
|
Понял,циклические ссылки уже успел понаделать,но не компилировалось,ошибка была.
|
|
#10
|
|||
|
|||
|
а если у меня есть такая процедура
Код:
procedure Tbase.Show; begin memo1.Clear;//здесь я хочу иметь возможность обращаться к memo1 end; |
|
#11
|
|||
|
|||
|
Подскажите кто может в таком вопросе!
у меня есть задание "Определить базовый класс с именем Tbase и полями данных определенными в варианте задания. Включить в класс методы, обеспечивающие: -заполнение полей данных; -отображение (вывод ) полей данных;" я делал так Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Parent,StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Sportsmen:Tbase;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
//
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//
end;
{$R *.dfm}
begin
Sportsmen:=Tbase.Create;
end.Код:
unit Parent; interface type Tbase=class private constructor Create; public fSurname:ShortString; fName:ShortString; procedure Vvod; procedure Vyvod; end; implementation constructor Tbase.Create; begin fSurname:=''; fName:=''; end; procedure Tbase.Vvod; begin // end; procedure Tbase.Vyvod; begin // end; end. |
|
#12
|
||||
|
||||
|
У тебя масса недочётов:
1. Это не класс Код:
type Tbase=class private constructor Create; public fSurname:ShortString; fName:ShortString; procedure Vvod; procedure Vyvod; end; измени примерно так: Код:
type
Tbase = class
private
fSurname : String;
fName : String;
procedure SetName(Value : String);
procedure SetSurName(Value : String);
public
constructor Create;
property Name : String read fName write SetName;
property SurName : String read fSurName write SetSurName;
end;
implementation
constructor Tbase.Create;
begin
fSurname : ='';
fName : ='';
end;
procedure Tbase.SetName(Value : String);
begin
if Value <> fName then
fName := Value;
end;
procedure Tbase.SetSurName(Value : String);
begin
if Value <> fSurName then
fSurName := Value;
end; |
|
#13
|
|||
|
|||
|
в том что вы написали я разобрался.но вопрос всё равно тот же.я могу в этом модуле обращаться к memo,edit и т.п.?и нужно ли это делать именно здесь?
|
|
#14
|
||||
|
||||
|
Ну и пиши:
Код:
Sportsmen.Name := edit1.text; |
|
#15
|
|||
|
|||
|
Цитата:
|