Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 16 из 25<  1 ... 13  14  15  16  17  18  19 ... 25  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
MegaHertz писал(а):
в C# используем статическую(фактически глобальную)?
Если тебе эта форма нужна в одном экземпляре для всей программы - можна и так.

_________________
Ку ку



Партнер
 

Member
Статус: Не в сети
Регистрация: 12.08.2005
Откуда: Казань
Daemon
Цитата:
Если тебе эта форма нужна в одном экземпляре для всей программы - можна и так.

В целях самообразования:а как еще можно?

_________________
... камень предткновения всех мужчин?
-что за камень? -море? -алгебра? -дихотомия добра и зла? - БАБЫ!!! :)))) (См. ПКМ Сундук мертвеца)


 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
См. Mediator. А про статику забудь. Тут decoupling нужен.

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
eisernWolf медиатор - это слишком мощно, для подобной задачи (ему же ненадо отслеживать изменения состояния какго-нибудь объекта) :)

MegaHertz ну у тебя 100% одна форма будет порождать другую, ведь так? Просто нужно зделать метод, в классе формы, которая порождается, основное назначение которого - передача экземпляра созданого класса формы, и вызывать его после создания, ну типа так
Код:
class Form1
{
.
.
.
    public void CreateChildForm()
    {
       frm2 = new Form2();
       frm2.SetParentForm(this);
    }
.
.
.
}


Грубо конечно, но думаю понятно.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 12.08.2005
Откуда: Казань
Товарищи,посоветуйте какой компонент использовать для вывода данных на форму,аналогичный StringGrid в Delphy

_________________
... камень предткновения всех мужчин?
-что за камень? -море? -алгебра? -дихотомия добра и зла? - БАБЫ!!! :)))) (См. ПКМ Сундук мертвеца)


 

Member
Статус: Не в сети
Регистрация: 11.03.2004
Откуда: Новосибирск
люди! кто-нибудь встречал литературу на русском по 3-му фреймворку?


 

Member
Статус: Не в сети
Регистрация: 16.09.2003
Откуда: Санкт-Петербург
Daemon писал(а):
основное назначение которого - передача экземпляра созданого класса формы, и вызывать его после создания

И вообще на мой взгляд так следует писать вообще все. :)
Я обычно рисую дизайнером нужную мне форму, затем открываю файл дизайнера и переношу весь сгенеренный им код в свой конструктор(и со временем оптимизирую).

Andron_ писал(а):
люди! кто-нибудь встречал литературу на русском по 3-му фреймворку?
насколько я понял, 3 фрамеворк это второй фрамеворк+дополнительные навесные технологии.

MegaHertz писал(а):
перешел с Delphy на С#


Лучше переходи на VB.NET. После дельфи окажешься как в раю, сам язык очень похож на Delphi, а среда разработки в VB намного дружелюбнее чем для C#
ps: сам я эволюционировал так: BP->DELPHI->C#->VB.NET. С#-же предназначен для тех, кто шел в своем развитии по ветке C -> C++. Собственно говоря только в этом и заключается вся разница между этими двумя языками. (и не слушай всякого рода "эстетов" и фанатские перепалки а-ля ATI-Nvidia)

MegaHertz писал(а):
В Delphy было элементарно uses + Form_.xxx Здесь это не проходит


Тут вместо этого Namespace и Imports(в C# - using). Если класс во внешней библиотеке то еще и имя модуля. Все можно опустить, но в этом случае придется вызывать класс с полным путем например:
Код:
dim conn as System.Data.SqlClient.SQLConnection.

Можно в Imports указать часть пути, а затем вызывать класс по части пути
Код:
Imports System.Data
...
dim con as  SqlClient.SQLConnection


или задать алиас и вызывать класс по нему.

Код:
Imports MyServer=System.Data.SqlClient
...
dim con as  MyServer.SQLConnection


Ниже в примере "SUB Создание_таблиц_на_сервере" широко юзаются все эти способы. Так к примеру ByVal smo As SqlWrapper.MySMO это класс MySMO объявленный в основном namespace внешней DLL по имени Sqlwrapper.

Вот тут я рассказывал про namespace более подробно.
http://www.nestor.minsk.by/kg/authors/g ... espace.htm


MegaHertz писал(а):
Товарищи,посоветуйте какой компонент использовать для вывода данных на форму,аналогичный StringGrid в Delphy
Если ты работаешь на NET 2.0 то DatagridView. Если ты не работаешь на Net 2.0 тебе следует на него перейти, там вообще много вкусностей. :)

Добавлено спустя 21 минуту, 46 секунд
Ray Adams писал(а):
Все. Особенно если большие формы и медленные компы. А у клиентов как обычно слабенькие компы. И все сказки любителей .NET, что скорость такая же это все именно сказки. Тормоза они там есть и никуда не денутся. Стоит только создать большой софт


А ты не пользуйся мастерами (они придуманы для того чтобы новичок легко нарисовал себе форму).

В особенности это касается мастеров связанных с базами данных, они такой код генерят что укачаешься. Всегда пиши код в критичных участках от руки.
Вот например функция синхронизации таблиц между входным Access файлом и SQL Server в одном моем проекте
Код:
Sub Создание_таблиц_на_сервере(ByVal dbtables As Hashtable, ByVal reader As OleDbDataReader, ByVal tblname As String, ByVal smo As SqlWrapper.MySMO)
        Dim dtClmn As DataTable = reader.GetSchemaTable
        If Not dbtables.ContainsKey(tblname.ToUpper) Then
            ULabel("такой таблицы на сервере еще нет, создаем")
            Dim createSql As System.Text.StringBuilder = New System.Text.StringBuilder
            createSql.Append("USE [" + My.Settings.cfgServerBase + "]" + vbNewLine)
            createSql.Append("CREATE TABLE " + tblname + "(" + vbNewLine)
            For Each r As DataRow In dtClmn.Rows
                createSql.Append("[" + r("ColumnName").ToString + "]")
                createSql.Append(" " + SqlWrapper.Net2SQLType(r("DataType").ToString, r("ColumnSize").ToString))
                If r("AllowDBNull").ToString.ToUpper = "TRUE" Then
                    createSql.Append(" NULL")
                End If
                'createSql.Append("," + vbNewLine)
            Next
            createSql.Append(") ON [PRIMARY]" + vbNewLine)
            Try
                smo.conn.ExecuteNonQuery(createSql.ToString)
            Catch ex As Exception

                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End Try
        Else
            ' такая таблица уже есть
            'TODO: Дописать проверку соответствия полей двух таблиц

        End If
    End Sub


ps: название процедуры не прикол, NET позволяет обзывать большинство объектов по-русски.

Если льешь большие объемы на SQL Server используй BulkLoad.


Код:
Dim bulk As SqlBulkCopy = New SqlBulkCopy(SqlWrapper.connstr)
AddHandler bulk.SqlRowsCopied, AddressOf BulkNextRowPortion
....
 Dim reader As OleDbDataReader = cmd.ExecuteReader ' любой реадер, я тут с MDB читаю.
....
bulk.DestinationTableName = tblname
bulk.NotifyAfter = Convert.ToInt32((rowcount / 5) + 1)
bulk.WriteToServer(reader)
 


ps: где то на MS лежат исходники третьей кваки на C++.NET. Бегают вполне шустро. Так что сказки про "тормоза NET", рассказывают те, кто накидал пару элементов на форму мышкой и этим и ограничился.

"Им(начинающим программерам), по всей видимости, кажется, что достаточно накидать компоненты на форму, написать обработчики событий нажатий на кнопки и работа над приложением закончена. Мне доводилось видеть довольно много подобных, на первый взгляд C++ (Delphi) программ, которые скорее можно было бы назвать "C программы с использованием чужих объектов"." (с) Я :) http://www.nestor.minsk.by/kg/authors/g ... /net/2.htm
Добавлено спустя 1 час, 12 минут, 2 секунды
Также не забывай блокировать все обработчики визуальных элементов на время загрузки данных. Вот так например я обычно гружу данные в TreeView

Код:
 

Class MyTree
   inherits TreeView
.....
  Property IsLoadData() As Boolean
        Get
            Return _isLoadData
        End Get
        Set(ByVal value As Boolean)
            _isLoadData = value
            If value Then
                Me.Enabled = False
                BeginUpdate()
                Me.DrawMode = TreeViewDrawMode.Normal
            Else
                Me.Enabled = True
                EndUpdate()
                Me.DrawMode = TreeViewDrawMode.OwnerDrawText
            End If
        End Set
    End Property

 Protected Overrides Sub OnDrawNode(ByVal e As System.Windows.Forms.DrawTreeNodeEventArgs)
        If _isLoadData Then Return ' с этого начинаются у меня все подобные обработчики.
        ....
 End Sub

Public Sub LoadServerList(ByVal fname As String)
        Me.Nodes.Clear()
        Me.IsLoadData = True
        .... ' проводим загрузку данных
        Me.IsLoadData = False
End Sub





и дальше в коде юзающем это дерево

Код:
  Private Sub ВыборСделан(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)
        If Not mtree.IsLoadData Then
            currentItem = CType(mtree.SelectedNode, ProjectTreeItem)
            ... ' бла-бла-бла
       End If
   End Sub



В результате весьма сложная формочка :) вроде этой
#77

весьма шустро бегает на ноуте iP3-600,384RAM и это при условии, что на этом же ноуте стоит MSSQL-2005 Express.

_________________
I5-14600K,DEEPCOOL AK620 WH, MSI Z690-A Pro WIFI DDR4, Cruicial Ballistic 2x16Gb BL2k16G32c16u4r, MSI 5070 TI Gaming Trio OC, Creative SB X-FI Titanium (PCI-E)


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
German Ivanov
С наступившим! :beer:

German Ivanov писал(а):
MegaHertz писал(а):
перешел с Delphy на С#

Лучше переходи на VB.NET. После дельфи окажешься как в раю, сам язык очень похож на дельфи

Да ИМХО и с Delphi при наличии документации и определенного опыта переходить не особо сложно.
Не даром Андерс Хейлсберг руку приложил. ;)



German Ivanov писал(а):
MegaHertz писал(а):
Товарищи,посоветуйте какой компонент использовать для вывода данных на форму,аналогичный StringGrid в Delphy
Если ты работаешь на NET 2.0 то DatagridView.

Ну, если смотреть на StringGrid, как на контрол способный хранить и отображать данные, то ИМХО ближе таки будет ListView, с его коллекцией элементов.
А если отображать данные, хранимые отдельно, к примеру, из массива там или коллекции то да - DataGridView самое оно.
Ессно ИМХО. :)


 

Member
Статус: Не в сети
Регистрация: 12.08.2005
Откуда: Казань
German Ivanov
Цитата:
Лучше переходи на VB.NET. После дельфи окажешься как в раю, сам язык очень похож на Delphi,

Преподу,которому курсовик сдавать это не обьяснишь
Цитата:
а среда разработки в VB намного дружелюбнее чем для C#

не совсем понял,и то,и то в Visual Studio,что же там дружелюбнее?
Цитата:
ps: сам я эволюционировал так: BP->DELPHI->C#->VB.NET. С#-же предназначен для тех, кто шел в своем развитии по ветке C -> C++. Собственно говоря только в этом и заключается вся разница между этими двумя языками. (и не слушай всякого рода "эстетов" и фанатские перепалки а-ля ATI-Nvidia)

Не знаю,мне C#понравился(вернее синтаксис,циклические алгоритмы типа for) ,теперь с трудом заставляю себя begin-end писать в Delphy.
Цитата:
Если ты работаешь на NET 2.0 то DatagridView. Если ты не работаешь на Net 2.0 тебе следует на него перейти, там вообще много вкусностей.

В смысле .Net 2.0?Возможно будете смеяться но юзаю Visual Studio 2005(это как-то связано?)
_SGK
Цитата:
Да ИМХО и с Delphi при наличии документации и определенного опыта переходить не особо сложно.
Не даром Андерс Хейлсберг руку приложил.

+1,я книгу Шилдта -Справочник по C# использовал

_________________
... камень предткновения всех мужчин?
-что за камень? -море? -алгебра? -дихотомия добра и зла? - БАБЫ!!! :)))) (См. ПКМ Сундук мертвеца)


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
German Ivanov писал(а):
NET позволяет обзывать большинство объектов по-русски.

А вот это - ЗЛО. Да да. Код становится абсолютно нечитаемым, в случае если его читает иностранный программист (а такое бывает - не надо прививать новичкам вредные привычки). Тут присылали как-то испанцы свой код. Все по испански и ни черта ни понятно.
MegaHertz писал(а):
В смысле .Net 2.0?Возможно будете смеяться но юзаю Visual Studio 2005(это как-то связано?)

.net 2.0 - это непосредственно фреймворк, а не IDE под него...


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
German Ivanov писал(а):
А ты не пользуйся мастерами (они придуманы для того чтобы новичок легко нарисовал себе форму).

Вот это уже глупости. Визуально программирование и было создано для того, чтобы его использовать. Примером служит Delphi. Я не уверен, что кто-то там все ручками делал! Так как Delphi отлично мог обрабатывать формы любой сложности :)
Кстати твое утверждение, что с Delphi лучше переходить на VB.NET опять же неверно. C# удобнее даже для Дельфиста! VB.NET же слишком мучителен будет как и был VB без .NET :)

Кстати поставил перед новым годом SP1 для VS2005! Ура! Пофиксили пару грубых глюков в IDE, теперь жить стало получше :) Но все равно ненавижу .NET и жду появления Delphi UNICODE


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
German Ivanov
German Ivanov писал(а):
название процедуры не прикол, NET позволяет обзывать большинство объектов по-русски.

Тоже самое можно делать и в BDS 2006. :)

Catar
Catar писал(а):
MegaHertz писал(а):
В смысле .Net 2.0?Возможно будете смеяться но юзаю Visual Studio 2005(это как-то связано?)

.net 2.0 - это непосредственно фреймворк, а не IDE под него...

Ну эт ты зря :) – безусловно связанно!
Бо одним из существенных отличий связанных с VS 2005 является то, что новая IDE работает с NET.Framework 2.0 или выше.

Catar писал(а):
А вот это - ЗЛО.

Ну фиг знает зло или нет, но уверен, что те парни которые это мутили покомпетентнее нас с тобой будут. ;)
Я конечно тоже такой подход не приветствую, но вот написал пробно :) по варианту класса для C#, C++Builder и Delphi.
Все по-русски - имя класса, члены класса, везде работает – прикольно.


Catar писал(а):
Тут присылали как-то испанцы свой код. Все по испански и ни черта ни понятно.

Да ты ШО! :shock:
А помнится, не так давно ряд товарищей меня уверяли :D, что все крутые перцы все всегда круто комментируют... :lol:


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
_SGK писал(а):
Ну эт ты зря– безусловно связанно!
Бо одним из существенных отличий связанных с VS 2005 является то, что новая IDE работает с NET.Framework 2.0 или выше.

Да. Но это косвенная связь, под 2.0 можно писать и на борландовском IDE, насколько я знаю, и вообще без IDE(изврат).
_SGK писал(а):
что все крутые перцы все всегда круто комментируют.

дык по-испански комментируют :)
А вообще тут в Питере есть одна фирма (не маленькая для оутсорса - ~500 чел девелоперов, и не только в Питере - есть отдел в Днепропетровске) - дык у этих среди кучи корпоративных идей так сказать, есть еще мысль что комменты это вообще зло :), тк надо писать код понятный без комментов :)
Добавлено спустя 2 минуты, 5 секунд
_SGK писал(а):
Ну фиг знает зло или нет, но уверен, что те парни которые это мутили покомпетентнее нас с тобой будут.

непонятны их мотивы....
с одной стороны, ежели проект монолитно разрабатывается фирмой, сплошь состоящей из допустим только русских девелоперов, то оно и не вредит. А если аутсорс?
Сама MS кажется забыла о своих индийских частях... вот прислали бы им код с именами на хинди :lol:


 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
GI >>а среда разработки в VB намного дружелюбнее чем для C#

Уже нет. Дженерики же на VB вообще убого смотрятся.

Catar >>дык по-испански комментируют

На это есть стандарты. Любые именования и комменты - на английском.

>>тк надо писать код понятный без комментов

Правильно. Комменты - это всего лишь еще один способ описать то, что ты хочешь сделать с помощью кода. Зачем плодить дубли? При TDD и XP вообще это зло, т.к. изменяя структуру кода приходится и комменты править. Я, например, последнее время комментирую только исключения и иногда какие-то особенности использования метода или класса с примерами. Ну вот первое что под руку попалось (комментировать тут методы и формальные параметры уже будет просто излишеством):

Код:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;

namespace ***
{
   /// <summary>
   /// Provides helper methods to layout tab buttons.
   /// </summary>
   public class TabLayoutBuilder
   {
      #region Properties.Protected

      /*
       * DefaultTabButtonSize
       */

      private Size _defaultTabButtonSize = Size.Empty;

      /// <summary>
      /// </summary>
      protected Size DefaultTabButtonSize
      {
         get
         {
            return _defaultTabButtonSize;
         }
      }

      /*
       * TabButtons
       */

      private List<TabButton> _tabButtons = null;

      /// <summary>
      /// </summary>
      protected List<TabButton> TabButtons
      {
         get
         {
            return _tabButtons;
         }
      }

      #endregion

      #region Properties.Protected.Virtual

      /*
       * SelectedTabButtonOffset
       */

      private static Rectangle _selectedTabButtonOffset = new Rectangle(-2, -2, 4, 4);

      /// <summary>
      /// Gets the <see cref="Rectangle"/> that determines the offset for the location and size
      /// of the selected tab button.
      /// </summary>
      protected virtual Rectangle SelectedTabButtonOffset
      {
         get
         {
            return _selectedTabButtonOffset;
         }
      }

      #endregion

      #region Methods.Public

      /// <summary>
      /// </summary>
      public void RebuildLayout(Rectangle tabStripBounds)
      {
         if (tabStripBounds == Rectangle.Empty)
         {
            return;
         }

              Debug.Assert(this.TabButtons != null, "this.TabButtons != null");

                        TabButton selectedTabButton = null;
         int currentLeftOffset = tabStripBounds.Left;
         int defaultWidth = this.TabButtons.Count * this.DefaultTabButtonSize.Width;
         int tabButtonWidth = this.DefaultTabButtonSize.Width;

         if (defaultWidth > tabStripBounds.Width)
         {
            tabButtonWidth = tabStripBounds.Width / this.TabButtons.Count;
         }

         foreach (TabButton tabButton in this.TabButtons)
         {
            tabButton.Width = tabButtonWidth;
            tabButton.Height = tabStripBounds.Height;
            tabButton.Top = tabStripBounds.Top;
            tabButton.Left = currentLeftOffset;
            
            currentLeftOffset += tabButton.Width;

            if (tabButton.Selected)
            {
               Debug.Assert(selectedTabButton == null, "selectedTabButton == null");
               selectedTabButton = tabButton;
            }
         }

         /* Selected */

         if (selectedTabButton != null && selectedTabButton.Enabled)
         {
            selectedTabButton.Top += this.SelectedTabButtonOffset.Top;
            selectedTabButton.Left += this.SelectedTabButtonOffset.Left;
            selectedTabButton.Width += this.SelectedTabButtonOffset.Width;
            selectedTabButton.Height += this.SelectedTabButtonOffset.Height;

            selectedTabButton.BringToFront();
         }
      }

      #endregion

      #region Constructors

      /// <summary>
      /// Initializes a new instance of the <see cref="TabLayoutBuilder"/> class.
      /// </summary>
      /// <exception cref="ArgumentNullException">
      ///   <para>
      ///      <paramref name="tabButtons"/> is <see langword="null"/>.
      ///   </para>
      /// </exception>
      public TabLayoutBuilder(List<TabButton> tabButtons, Size defaultTabButtonSize)
      {
         if (tabButtons == null)
         {
            throw new ArgumentNullException("tabButtons");
         }

         _defaultTabButtonSize = defaultTabButtonSize;
         _tabButtons = tabButtons;
      }

      #endregion
   }
}



>>непонятны их мотивы

Это не монитвы. Это юникоды :)

>>то оно и не вредит

Раскладку переключать бесит хотя бы.

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
eisernWolf писал(а):
На это есть стандарты. Любые именования и комменты - на английском.

Стандарты это есть гуд. Но стандарты на уровне компилятора, а не на уровне формальной доки - надежнее :wink:
eisernWolf писал(а):
XP

экстремальное программирование ?
eisernWolf писал(а):
Это не монитвы. Это юникоды

И? кто мешал всунуть в компиль проверку на входимость имени метода\класса\поля\etc в ASCII? То бишь обрезать возможность.
eisernWolf писал(а):
Раскладку переключать бесит хотя бы.

ну дык это для рус-енг, а тем же испанцам-то на это пофиг.


 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
>>Но стандарты на уровне компилятора, а не на уровне формальной доки - надежнее

Формализовать... Ну разве что с помощью XML (хоть мне такая идея и не очень по душе, но чувствую, что это все-таки будет): click here

>>экстремальное программированиe

Да


>>То бишь обрезать возможность

Это не политкорректно ;)

>>тем же испанцам-то на это пофиг

Не думаю. Не знаю насчет испанского, в немецком умляуты забивают фигурные скобки и пару других служебных символов. Им раскладку тоже приходится дергать.

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
eisernWolf писал(а):
click here

:shock:
чего только не придумают, вместо того чтобы научиться писать читабельный хороший код.
eisernWolf писал(а):
Это не политкорректно

ну а это уже вопрос выбора. Либо политкорректность, либо читабельность.
eisernWolf писал(а):
в немецком умляуты забивают фигурные скобки и пару других служебных символо

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


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
eisernWolf писал(а):
click here

Большего идиотизма я пока не видел! Супер просто! :)


 

Member
Статус: Не в сети
Регистрация: 16.09.2003
Откуда: Санкт-Петербург
MegaHertz писал(а):
Преподу,которому курсовик сдавать это не обьяснишь


А ... ну тогда понятно.

MegaHertz писал(а):
не совсем понял,и то,и то в Visual Studio,что же там дружелюбнее?


Автодополнение и прочие штуки . Вот например

>>> теперь с трудом заставляю себя begin-end писать в Delphy.

Тут например они сами вставляются, как и многое многое другое.

Catar писал(а):
А вот это - ЗЛО. Да да. Код становится абсолютно нечитаемым
Комменты это не конструкции языка, это способ сделать код понятнее тому кто его будет читать. Если западный программист готов оплатить написание комментов на английском языке, я ему их напишу. Для себя я пишу как мне удобнее, для заказчика - так как удобнее ему. Если заказчику пофигу(как чаще всего и бывает, по крайней мере оплачивать время на рефакторинг и вылизывание кода он не хочет), то пишу как удобнее мне.

ps: Мне лично русские название удобнее тем, что в автокомплете они группируются вместе и сразу видно где твои функции, а где унаследованные методы. Набрав точку и переключившись на русскую раскладку ты этим автоматом переходишь на _свои_ методы, а переключившись на английскую на унаследованные. Для мало подготовленного программиста-пользователя(не знающего VB), такой код так просто спасение. Он может сам править мелкие нестыковки.

ps: Как я уже писал выше, что по этому поводу думают испанцы мне все равно, отфакторить код, при необходимости, займет пять минут времени(видел в контекстной менюшке VS2005 пункт "Rename" ? :) ).

Ray Adams писал(а):
Вот это уже глупости. Визуально программирование и было создано для того, чтобы его использовать.


Угу. но не так как народ привык это использовать. Я обычно делаю _свои_ визуальные компоненты, а уже потом визуально ими программирую. Родные же контролы имхо, по сути, это неболее чем заготовки (ООП рулит :))

Банальный пример: Я никогда не вставляю в TreeView класс TreeNode, а всегда его потомка с нужной мне функциональностью. А значит все его мастера пролетают.

Ну и, опять таки, не я же жалуюсь на тормоза, а ты. :) перестанешь пользоваться мастерами - тормоза уйдут.

Еще один банальный пример. Есть три страницы табов на которых имеется около 50 текстбоксов, комбобоксов и прочей шняги (редактор рас для GalCiv2). Если следовать логике VS и Delphi я должен писать для них OnClick где обрабатывать изменения etc. Также мне надо забиндивать их на базу данных (XML файл конфига, который я должен грузить в DataSet).... так?

Я сделал проще, в Tag каждого контрола, который что-либо редактирует, записал название поля XML за которое он отвечает (визуально). А затем написал пару коротких процедур загрузки и подключения обработчика(одного на всех) и все!
Раса выбирается листбоксом(в нем лежит мини-класс хранящий ссылку на соответсвующую ему ноду загруженного XMLDoc) чтобы листбокс его рисовал - перехвачен OnString.

Вот код загрузки контролов из XML файла(Обработчики цепляются за контролы аналогичным методом)

Код:

' выбор расы в листбоксе
 Private Sub ChoiceRace(ByVal o As Object, ByVal e As EventArgs)
        If Racelst.SelectedItem Is Nothing Then Return ' и так бывает не смейтесь :)
        Dim race As RaceListItem = CType(Racelst.SelectedItem, RaceListItem)
        For Each tb As TabPage In TabControl1.TabPages
            mFindControl(tb, race.RaceNode)
        Next
 End Sub

Private Sub mFindControl(ByVal Ctrl As Control, ByVal race As XmlNode)
        For Each ct As Control In Ctrl.Controls
            If TypeOf (ct) Is GroupBox Then
                mFindControl(ct, race) ' заходим во все встреченные GroupBox
            End If
            If CStr(ct.Tag) <> "" Then
                Dim xmltag As String = CType(ct.Tag, String)
                Dim xnode As XmlNode = race.SelectSingleNode(xmltag)
                If Not xnode Is Nothing Then
                    If TypeOf (ct) Is TextBox Then
                        Dim tb As TextBox = CType(ct, TextBox)
                        tb.Text = xnode.InnerText
                    ElseIf TypeOf (ct) Is Panel Then
                        Dim txtcolor() As String = xnode.InnerText.Split(","c)
                        ct.BackColor = Color.FromArgb(CInt(txtcolor(0)), CInt(txtcolor(1)), CInt(txtcolor(2)))
                    ElseIf TypeOf (ct) Is ComboBox Then
                        Dim tb As ComboBox = CType(ct, ComboBox)
                        tb.SelectedIndex = CInt(xnode.InnerText)
                    End If
                    ct.Enabled = True
                Else
                    If TypeOf (ct) Is TextBox Then
                        'CType(ct, TextBox).Text = ""
                    End If
                    ct.Enabled = False
                End If
            End If
        Next
    End Sub



И вот только теперь начинается работа "визуальности", контролы можно носить по форме, добавлять, убавлять, переименовывать etc. Никаких обработчиков для них не нужно.



ps: eisernWolf и Catar скажите мне, положа руку на сердце, какие вам еще комменты тут нужны? VB самодокументируемый язык изначально для человека понимающего английский. Это закорючки С- образных языков следует комментировать. :)

eisernWolf писал(а):
Уже нет.
Еще да :) Попробовал все равно не понравилось.

eisernWolf писал(а):
Дженерики же на VB вообще убого смотрятся.


А чего дженерики на VB?
Код:
Public Class PhoneticRule
            Public BeginningOnly As Boolean
            Public Condition As Integer() = New Integer(256) {}
            Public ConditionCount As Integer = 0
            Public ConsumeCount As Integer
            Public EndOnly As Boolean
            Public Priority As Integer
            Public ReplaceMode As Boolean = False
            Public ReplaceString As String
        End Class
        ' и его коллекция.
        Friend Class PhoneticRuleCollection
            Inherits System.Collections.Generic.List(Of PhoneticRule)
        End Class



Ray Adams писал(а):
Кстати твое утверждение, что с Delphi лучше переходить на VB.NET опять же неверно. C# удобнее даже для Дельфиста! VB.NET же слишком мучителен будет как и был VB без .NET


Тогда странно что ты выбрал Delphi, а не Builder. Синтаксис VB - калька с Delphi (+ пара тройка удобных фишек), а C# - развитие C++

Ray Adams писал(а):
Кстати поставил перед новым годом SP1 для VS2005! Ура! Пофиксили пару грубых глюков в IDE, теперь жить стало получше


Хм. Поставил, никаких отличий не заметил.

Ray Adams писал(а):
Но все равно ненавижу .NET и жду появления Delphi UNICODE


Может в этом все дело? :)

_________________
I5-14600K,DEEPCOOL AK620 WH, MSI Z690-A Pro WIFI DDR4, Cruicial Ballistic 2x16Gb BL2k16G32c16u4r, MSI 5070 TI Gaming Trio OC, Creative SB X-FI Titanium (PCI-E)


Последний раз редактировалось German Ivanov 08.01.2007 0:00, всего редактировалось 1 раз.

 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
German Ivanov писал(а):
Ну и, опять таки, не я же жалуюсь на тормоза, а ты. Smile перестанешь пользоваться мастерами - тормоза уйдут.

И не собираюсь переставать ими пользоваться. На кой мне нужен Visual IDE если я буду забивать на все его возможности!? Да и при чем тут мастера!? Тормозит все, начиная с IDE и заканчивая готовым .exe файлом. Я лишь лишний раз говорю о том, что .NET это фигня, придуманная Microsoft чтобы бабло грести и все. Никакой реальной пользы я от него не вижу. Ничего интересного он не принес, кроме гемороя. Microsoft никогда еще не придумала что-то действительно удобного и полезного :)


German Ivanov писал(а):
Я сделал проще, в Tag каждого контрола, который что-либо редактирует,

Для каждой вещи всегда можно найти более удобный метод работы нежели стандартный. Я не спорю с этим. Вот к примеру скриншот окна редактирования TimeTable из одной моей программы. Все там делается ручками. Создание грида и редатирование , все делается в run time.

#77

German Ivanov писал(а):
Тогда странно что ты выбрал Delphi, а не Builder. Синтаксис VB - калька с Delphi (+ пара тройка удобных фишек), а C# - развитие C++

Издеваешься да!??? :) Какая калька!? Я когда смотрю на код VB мне плохо становится. Builder я не выбрал так как я не пишу на C, я программировать начал с Turbo Pascal 1.0! :) И сижу сейчас на Delphi 7. C++ используется для системного программирования, C# для проектов где нужен UNICODE и не более.

German Ivanov писал(а):
Хм. Поставил, никаких отличий не заметил

У меня были конкретные баги с кучей контролов и с потерей BindingSource с формы. Сейчас все нормально. Правда IDE как тормозил безбожно так и продолжает тормозить :)

German Ivanov писал(а):
Может в этом все дело?

Вполне может быть. Как и писал выше. .NET Это зло. Страшное зло! Ничего более идиотское из Microsoft пока не выходило! Хорошо хоть они сами поняли свою ошибку и стали делать Висту всю на .NET! Вот было бы прикольно на этот ужас посмотреть.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 16 из 25<  1 ... 13  14  15  16  17  18  19 ... 25  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan