Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
Пример макроса с формой на C#
 
Господа, дайте кто-нибудь пример макроса с формой на C#.
В хелпе MaсroEditor.chm пример на VB.

А на c# я не могу его повторить.

(The name 'InitializeComponent' does not exist in the current context)

Спасибо.
 
Александр, оставьте e-mail для связи с Вами и я Вам его вышлю
Изменено: Александр Сысоев - 29.10.2008 11:04:29
 
Спасибо. Что-то видимо я накрутил у себя. Т.к. всё тоже самое что и у Вас, а не компилится.
Сделел всё с нуля - работает. В аттаче шаблон с одной кнопкой, кот. закрывает форму. Может кому понадобится.
 
Мне бы тоже не помишал пример макроса с формой. Не могу открить файлик, что тут прикреплен, распознает браузер его не правильно.
 
у меня имеется Form2. на этой форме есть pictureBox. он private. а мне нужно обратиться к нему из модуля или другой формы. как изменить доступ к этому боксу? или есть другой способ установить картинку в него?
Изменено: 4epHblu - 16.06.2017 19:50:07 (тест)
 
Цитата
Дмитрий Трасин пишет:

как изменить доступ к этому боксу?
Примерно так:
В дизайнере у бокса измените private на public.

Затем в другой форме пройдите foreach по всем активным формам приложения, выбрав по имени Form2 и через точку обратитесь к боксу.

Другой способ. Создайте статическую переменную типа ArrayList, например, form2Obj. Добавьте в событии Form2 объект формы form2Obj.Add(this); Далее переберите циклом foreach массив form2Obj в другой форме, найдите бокс.
 
первый вариант меня больше устраивает, меньше мороки
но вот что-то не меняется. забыл написать что не получается изменить private на public, просто не меняется код и всё. для этого нужно использовать какой-то изощренный метод? или я не вижу...
Изменено: Дмитрий Трасин - 25.11.2010 11:48:20
 
почему это вот
Код
public static void Macro_0(string str_0, string str_1, int form_width, int form_height, string selclass)
      {
         Form2Namespace.Form2 formToSel = new Form2Namespace.Form2();
          formToSel.Text = str_0;
         formToSel.Width = form_width;
          formToSel.Height = form_height;
проблем не вызывает, а следующие за этими строки
Код
         formToSel.pictureBox0.ImageLocation = "menu_img\\0-0-1.jpg";
          formToSel.pictureBox0.Location = new System.Drawing.Point(3, 35);
          formToSel.pictureBox0.Visible = true;
дают ошибку?
 
Вот такой вариант попробуйте (выдернул из последнего проекта, нужно было поменять свойство кнопки из другого класса).

В дизайнере MainForm.Designer.cs меняем видимость элемента с private на public или internal
internal System.Windows.Forms.Button ChangeFileName_btn;

// Создаем статическую переменную объекта главной формы в классе главной формы
internal static MainForm mnFormObj;

//Загрузка формы
void MainFormLoad(object sender, EventArgs e)
{
//Присваиваем значения объекту формы
mnFormObj = this;
}

в другом классе меняем свойство элемента, обращаясь к статической переменной

//Делаем неактивной кнопку "Изменить"
MainForm.mnFormObj.ChangeFileName_btn.Enabled = false;
Изменено: Сергей Максимов - 26.11.2010 06:45:21
 
я пишу макрос, а все файлы сопутствующие хранятся внутри файла grs, я полагаю, поэтому открыть .cs напрямую не получается. мне остаётся использовать первый предложенный Вами вариант, либо придумывать что-то новое=) у меня есть одна идея... буду пробовать
 
А вы пишите все в VS, а в макрос подключайте только dll в References. И все вам будет доступно. Можно вообще целую программу написать в виде dll, а потом из макроса вызывать ее классы.
Изменено: Сергей Максимов - 26.11.2010 21:42:43
 
да, тоже хороший вариант
большое спасибо!
 
а как циклом можно перебрать объекты формы, те-же pictureBox'ы? мне нужно в pictureBox0 вставить изображение 0-0.jpg, в pictureBox1 - 0-1.jpg... перерыл все книги кторые имеются не нашёл... и как это лучше сделать
 
Код
             foreach  (PictureBox pb in this.Controls.OfType<PictureBox >())
             {
                 MessageBox.Show(pb.Name );
             }
 
спасибо
но так не работает
Код
foreach (PictureBox pb in this.Controls.OfType<PictureBox >())

'System.Windows.Forms.Control.ControlCollection' does not contain a definition for 'OfType'

Код
foreach (PictureBox pb in this.Controls.GetType<PictureBox >())

The non-generic method 'object.GetType()' cannot be used with type arguments

Код
foreach (PictureBox pb in this.Controls.GetType())

foreach statement cannot operate on variables of type 'System.Type' because 'System.Type' does not contain a public definition for 'GetEnumerator'
Изменено: Дмитрий Трасин - 30.11.2010 18:43:03
 
Просто это под .Net Framework 3.5
Вот под 2.0:

Код
   foreach (Control ctrl in this.Controls)
   {
      if (ctrl is PictureBox)
      {
         Interaction.MsgBox(ctrl.Name);
      }
   }
 
огромное, как говорится, человеческое =)
....эм
а как добраться до ImageLocation теперь, ато он мне говорит
Цитата
'System.Windows.Forms.Control' does not contain a definition for 'ImageLocation'

Вообще довольно странно что у меня в наличии 26 учебников и ни в одном я не нашёл конкретно способов обращения к объектам... С жабаскриптом у меня таких проблем не было, я сам по учебникам всё нашёл. А тут мне уже неловко спрашивать в который раз. Может кто заодно подскажет какой учебник читать?
Изменено: Дмитрий Трасин - 02.12.2010 18:19:04
 
подскажите как при помощи макроса вставить деталь в сборку, имею относительный путь к файлу
Изменено: Дмитрий Трасин - 14.02.2011 21:13:05
 
возможно такое?? чего все молчат, не пойму
может вопрос не в той ветке задал?
 
См. конструкторы с именем файла фрагмента в классах TFlex::Model::Model2D::Fragment и TFlex::Model::Model3D::Fragment3D для 2D и 3D фрагментов соответственно.
Кто ищет - тот всегда найдет!
Страницы: 1 2 След.