![]() |
|
|
Регистрация | << Правила форума >> | 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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Спасибо,всё работает!Вы мне можете посоветовать хорошую книгу на русском,купил Флёнова "библию delphi",но иногда бывает её мало или не полно в ней что то отражено.
|
#4
|
||||
|
||||
![]() Для меня лучшей книгой было F1 и исходный код Дельфи. Бумажные книги помогли мало.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
|||
|
|||
![]() в том что вы написали я разобрался.но вопрос всё равно тот же.я могу в этом модуле обращаться к memo,edit и т.п.?и нужно ли это делать именно здесь?
|
#14
|
||||
|
||||
![]() Ну и пиши:
Код:
Sportsmen.Name := edit1.text; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() Цитата:
|