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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 14.03.2011, 18:19
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

спасибо.половина работает)
а именно,одна ошибка гдето,
Sh1.left:=TShape(MySender).left-2 здесь left берётся не из объекта на который кликаю,а из пложение формы на экране.
может я MySender:=Sender; не туда вписал?
я его сюда :
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Sh:=TShape.Create(Self) ;
 <...>
  MySender:=Sender;
 

Апд: всё,разобрался как сендер работает!) его в процедуру NewSh надо вписывать.спасибо!

Последний раз редактировалось Snake22, 14.03.2011 в 18:22.
Ответить с цитированием
  #17  
Старый 16.03.2011, 21:30
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

подскажите еще такую штуку.
вот у меня массив из двух кнопок.
и при нажатии на другую кнопку(кнопка не из массива) надо чтобы эти две кнопки в массиве поменялись местами.Подскажите как если это вообще реально сделать?
Ответить с цитированием
  #18  
Старый 16.03.2011, 21:55
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Поменять местами кнопки в массиве...
Код:
...
var Buttons: array[1..2] of TButton;
     Buff:Tbutton;
begin
Buff:=Buttons[1];
Buttons[1]:=Buttons[2];
Buttons[2]:=Buff;
end;
Поменять местами кнопки на форме...
Код:
...
var Buttons: array[1..2] of TButton;
     Buff:Integer;
begin
Buff:=TButton(Buttons[1]).left;
TButton(Buttons[1]).left:=TButton(Buttons[2]).left;
TButton(Buttons[1]).left:=Buff;
end;
Ответить с цитированием
  #19  
Старый 16.03.2011, 22:41
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

ага спасибоюсейчас возможности проверить нету попозже проверю.а свойства все обменяются? имя теги кепшн..?
Ответить с цитированием
  #20  
Старый 16.03.2011, 23:31
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Цитата:
Сообщение от Snake22
ага спасибоюсейчас возможности проверить нету попозже проверю.а свойства все обменяются? имя теги кепшн..?
ты просто названия в массиве меняешь и все... у Button1 кэпшн так и останется Button1... А Buttons[1].Caption станет Button2... А смысл в этой заманухе?

Последний раз редактировалось Janom, 16.03.2011 в 23:37.
Ответить с цитированием
  #21  
Старый 17.03.2011, 19:38
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

хм действительно какаято фигня получилась..
и у меня опять вопрос,
вот допустим я создал массив кнопок , кажой кнопке при созданиии добалвяеться имя , допустим Btns[1].name:='abc';
как мне потом обратиться к имени этой кнопки,а не к номеру массива?
ну написать например abc.caption:=...ошибка получаеться
Ответить с цитированием
  #22  
Старый 17.03.2011, 20:58
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Цитата:
Сообщение от Snake22
хм действительно какаято фигня получилась..
и у меня опять вопрос,
вот допустим я создал массив кнопок , кажой кнопке при созданиии добалвяеться имя , допустим Btns[1].name:='abc';
как мне потом обратиться к имени этой кнопки,а не к номеру массива?
ну написать например abc.caption:=...ошибка получаеться
ну как то так... и так кстаити вообще в массиве надобность пропадает...
Код:
function FindBTN(BtnName:ShortString):TComponent;
var i:integer;
begin
  for i:=0 to form1.ComponentCount-1 do
    begin
      if form1.components[i].name=(BtnName) then
        FindBTN:=form1.findcomponent(form1.components[i].name);
    end;
end;

использовать так:
Код:
TButton(FindBTN('abc')).caption:='asdasdasd';
Ответить с цитированием
  #23  
Старый 17.03.2011, 21:07
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
использовать так:
Код:
TButton(FindBTN('abc')).caption:='asdasdasd';
Такое уже за вас придумано: <TComponent>.FindComponent(<Имя компонента>)
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #24  
Старый 17.03.2011, 21:19
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

За-то схема то работает!)
Ответить с цитированием
  #25  
Старый 17.03.2011, 21:27
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Посмотри реализацию Findcomponent. Пошустрее работать будет Да и привязки к Form1 нету
А так, зачем лишний раз велосипед изобретать? Хотя, в самообразовательных целях, наверно, каждый городит свой огород.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #26  
Старый 26.03.2011, 00:32
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а еще подскажите пожалуйста.
создаю массив memo, и у каждого есть тег,
как мне обратиться к мему из массива,зная только его тег?
ну то есть короче как мне найти компонент определенного типа по тегу?
Ответить с цитированием
  #27  
Старый 26.03.2011, 00:35
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

бежать по массиву циклом от начала до конца и проверять в цикле ar[i].Tag = чему_нужно, где ar - массив из TMemo, i - переменная цикла, как только нашли то что нужно, делать break циклу.
типо вот так:
Код:
for i := Low(ar) to High(ar) do
begin
  if ar[i].Tag = 2 {или что вам нужно} then
  begin
    ar[i].Lines.Add('1'); // добавляем в найденный Memo текст
    break; // прерываем цикл (не тот о котором подумали некоторые, нет)
  end;
end;
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя

Последний раз редактировалось Assistant, 26.03.2011 в 00:43.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter