PRJMNG] JS 디자이너~
# 디자이너 화면...
도구상자, 디자이너, 속성창
# 디자이너 개체 구성
# 기본 컨셉
1. 디자이너 : 화면구성을 런타임상에서 작성!
2. 코드생성 : 디자이너에서 만들어진 구성을 각 사이트에 맞춤형 표준 코드로 변환!
3. 화면내용을 디자이너에서 미리 확인 및 스토리보드(ppt)로 추출.
'# 9) My Program(.NET) > JsFW40' 카테고리의 다른 글
금전관리 프로그램. (0) | 2015.09.26 |
---|---|
그리드 폼 만들기 (2) (0) | 2014.03.18 |
그리드 폼 만들기 (1) (0) | 2014.03.15 |
jsfw ] New Version! (0) | 2012.05.13 |
[JsFW40] 코딩을 시작하다!! (0) | 2010.11.10 |
PRJMNG] 조건패널, 마스터디테일, 스케쥴러.
조건패널용 레이아웃 그리드
라벨은 RowIndex = 0, ColumnIndex = 0, RowSpan = 1, ColumnSpan = 1
텍스트박스 RowIndex = 0, ColumnIndex = 1, RowSpan = 2, ColumnSpan = 2
마스터.디테일
디테일.SetMaster( 마스터 ){
마스터.Add_Detail( this);
마스터.Command += delegate{
// 각 명령들 반응.
};
}
스케쥴러
작업 스케쥴러로 시작일 , 종료일을 그리드내에서 구간이 표시됨.
- 작업내용 -----< 작업상세(SEQ)
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG - 흠] 6번째... 디자이너 뒤집기 작업!!! (0) | 2013.04.04 |
---|---|
PRJMNG] 스크린샷! (0) | 2013.04.01 |
PRJMNG] 클래스 관계... (0) | 2012.11.11 |
PRJMNG] 프로그램 프레임!! (0) | 2012.11.11 |
PRJMNG] 패턴? 패널? 이름이 뭔가?? 이건 (0) | 2012.10.24 |
웹 사이트 배포툴 ] 사이트 배포...
웹사이트소스 빌드 후
-> 파일 선택
-> 배포대상 선택 -> 배포 ( 특정 폴더에 복사될 파일과 이력 생성됨 )
-> 웹 서버 열어서 붙여넣기
이전 굿센 같은 경우라면 이력배포와 동시에 할수 있게 됨..
'# 9) My Program(.NET)' 카테고리의 다른 글
디자이너] 추가 역변환 (0) | 2013.07.03 |
---|---|
디자이너] 8번을 뒤집어... (0) | 2013.07.02 |
Dev Tools [ Idea ] (0) | 2012.07.06 |
MyCodeGen ] 웁쓰... 망했다. (0) | 2011.09.05 |
MyCodeGen ] 그리드를 만들다!!! (1) | 2011.08.27 |
MS-SQL] sp_helptxt 만들기...
sp_helptext 를 하면 애써 맞춰놓은 정렬이 다 깨져 나와서
그리드가 아닌 text로 바꿔 실행해서 본다거나 해당 프로시져를 찾아서 수정 눌러서 본다거나...
귀찮아진다.
기존껀 긴건 짤린다 해서 = varchar( max )
sp_helptext를 수정하였음.
아래 파란색 글씨만 추가해서 새로 등록함.
1. 스크립트 생성 [ SP_HELPTXT ]
USE [master]
GO
/****** Object: StoredProcedure [dbo].[SP_HELPTXT] Script Date: 11/22/2012 11:55:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[SP_HELPTXT]
@objname nvarchar(776)
,@columnname sysname = NULL
as
set nocount on
declare @dbname sysname
,@objid int
,@BlankSpaceAdded int
,@BasePos int
,@CurrentPos int
,@TextLength int
,@LineId int
,@AddOnLen int
,@LFCR int --lengths of line feed carriage return
,@DefinedLength int
/* NOTE: Length of @SyscomText is 4000 to replace the length of
** text column in syscomments.
** lengths on @Line, #CommentText Text column and
** value for @DefinedLength are all 255. These need to all have
** the same values. 255 was selected in order for the max length
** display using down level clients
*/
,@SyscomText nvarchar(4000)
,@Line nvarchar(255)
select @DefinedLength = 255
select @BlankSpaceAdded = 0 /*Keeps track of blank spaces at end of lines. Note Len function ignores
trailing blank spaces*/
CREATE TABLE #CommentText
(LineId int
,Text nvarchar(255) collate database_default)
/*
** Make sure the @objname is local to the current database.
*/
select @dbname = parsename(@objname,3)
if @dbname is null
select @dbname = db_name()
else if @dbname <> db_name()
begin
raiserror(15250,-1,-1)
return (1)
end
/*
** See if @objname exists.
*/
select @objid = object_id(@objname)
if (@objid is null)
begin
raiserror(15009,-1,-1,@objname,@dbname)
return (1)
end
-- If second parameter was given.
if ( @columnname is not null)
begin
-- Check if it is a table
if (select count(*) from sys.objects where object_id = @objid and type in ('S ','U ','TF'))=0
begin
raiserror(15218,-1,-1,@objname)
return(1)
end
-- check if it is a correct column name
if ((select 'count'=count(*) from sys.columns where name = @columnname and object_id = @objid) =0)
begin
raiserror(15645,-1,-1,@columnname)
return(1)
end
if (ColumnProperty(@objid, @columnname, 'IsComputed') = 0)
begin
raiserror(15646,-1,-1,@columnname)
return(1)
end
declare ms_crs_syscom CURSOR LOCAL
FOR select text from syscomments where id = @objid and encrypted = 0 and number =
(select column_id from sys.columns where name = @columnname and object_id = @objid)
order by number,colid
FOR READ ONLY
end
else if @objid < 0 -- Handle system-objects
begin
-- Check count of rows with text data
if (select count(*) from master.sys.syscomments where id = @objid and text is not null) = 0
begin
raiserror(15197,-1,-1,@objname)
return (1)
end
declare ms_crs_syscom CURSOR LOCAL FOR select text from master.sys.syscomments where id = @objid
ORDER BY number, colid FOR READ ONLY
end
else
begin
/*
** Find out how many lines of text are coming back,
** and return if there are none.
*/
if (select count(*) from syscomments c, sysobjects o where o.xtype not in ('S', 'U')
and o.id = c.id and o.id = @objid) = 0
begin
raiserror(15197,-1,-1,@objname)
return (1)
end
if (select count(*) from syscomments where id = @objid and encrypted = 0) = 0
begin
raiserror(15471,-1,-1,@objname)
return (0)
end
declare ms_crs_syscom CURSOR LOCAL
FOR select text from syscomments where id = @objid and encrypted = 0
ORDER BY number, colid
FOR READ ONLY
end
/*
** else get the text.
*/
select @LFCR = 2
select @LineId = 1
OPEN ms_crs_syscom
FETCH NEXT from ms_crs_syscom into @SyscomText
WHILE @@fetch_status >= 0
begin
select @BasePos = 1
select @CurrentPos = 1
select @TextLength = LEN(@SyscomText)
WHILE @CurrentPos != 0
begin
--Looking for end of line followed by carriage return
select @CurrentPos = CHARINDEX(char(13)+char(10), @SyscomText, @BasePos)
--If carriage return found
IF @CurrentPos != 0
begin
/*If new value for @Lines length will be > then the
**set length then insert current contents of @line
**and proceed.
*/
while (isnull(LEN(@Line),0) + @BlankSpaceAdded + @CurrentPos-@BasePos + @LFCR) > @DefinedLength
begin
select @AddOnLen = @DefinedLength-(isnull(LEN(@Line),0) + @BlankSpaceAdded)
INSERT #CommentText VALUES
( @LineId,
isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @AddOnLen), N''))
select @Line = NULL, @LineId = @LineId + 1,
@BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0
end
select @Line = isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @CurrentPos-@BasePos + @LFCR), N'')
select @BasePos = @CurrentPos+2
INSERT #CommentText VALUES( @LineId, @Line )
select @LineId = @LineId + 1
select @Line = NULL
end
else
--else carriage return not found
begin
IF @BasePos <= @TextLength
begin
/*If new value for @Lines length will be > then the
**defined length
*/
while (isnull(LEN(@Line),0) + @BlankSpaceAdded + @TextLength-@BasePos+1 ) > @DefinedLength
begin
select @AddOnLen = @DefinedLength - (isnull(LEN(@Line),0) + @BlankSpaceAdded)
INSERT #CommentText VALUES
( @LineId,
isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @AddOnLen), N''))
select @Line = NULL, @LineId = @LineId + 1,
@BasePos = @BasePos + @AddOnLen, @BlankSpaceAdded = 0
end
select @Line = isnull(@Line, N'') + isnull(SUBSTRING(@SyscomText, @BasePos, @TextLength-@BasePos+1 ), N'')
if LEN(@Line) < @DefinedLength and charindex(' ', @SyscomText, @TextLength+1 ) > 0
begin
select @Line = @Line + ' ', @BlankSpaceAdded = 1
end
end
end
end
FETCH NEXT from ms_crs_syscom into @SyscomText
end
IF @Line is NOT NULL
INSERT #CommentText VALUES( @LineId, @Line )
declare @lineNo int = 0;
declare @lineCnt int = 0;
declare @printtext varchar(max);
select @lineCnt = COUNT( LineId ) from #CommentText;
while( @lineNo < @lineCnt )
begin
set @lineNo = @lineNo + 1;
select @printtext = Text from #CommentText
where LineId = @lineNo ;
print( @printtext );
end
CLOSE ms_crs_syscom
DEALLOCATE ms_crs_syscom
DROP TABLE #CommentText
return (0) -- sp_helptext
2. 프로시져를 시스템프로시져로 만든다.
USE [master]
GO
exec sp_ms_marksystemobject 'sp_helptxt'
3. 단축키에 등록해서 사용하면
print 되기때문에 탭유지되면서 잘 나온다 복사 해서 쓰면 됨.
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
경고: 집계 또는 다른 ... 어쩌고 저쩌고 (0) | 2016.02.17 |
---|---|
MS-SQL] 코드트리 + 상세내역에 코드별 합계쿼리. (0) | 2013.02.26 |
MS-SQL] 테이블 스키마 생성 추출 쿼리. (0) | 2012.11.21 |
MS-SQL] SP_JS_시리즈... (0) | 2012.03.02 |
MS-SQL ] MSDN 일부 정리! (0) | 2012.03.02 |
MS-SQL] 테이블 스키마 생성 추출 쿼리.
오늘 두개의 데이타 베이스의 스키마 비교 쿼리를 만들다 보니..
한쪽은 있고 다른 한쪽은 없을 때를 위해 테이블을 복제를 자동화 하려고 했는데...
쿼리 한방에 안되네!
SELECT * INTO 대상DB.dbo.테이블명 FROM 소스DB.dbo.테이블명 where 1 = 2
하면 복제는 되는데 키가 복제가 안됨을 확인.
그래서 만들었다. 우선 mssql 스튜디오에서 만들어지는 스크립트와 같이 만들어 보고
고정 타입은 아닌것 같은데 군데 군데 하드 코딩이 되있어서 전혀 다르게 동작 가능.
음.. ms-sql에서 사용하는 테이블 -> Create 스크립트 쿼리 같은걸 이용하는건 못찾았다.
declare @tableName nvarchar(775) =QUOTENAME( SCHEMA_NAME() )+'.'+ QUOTENAME( 테이블명 )
declare @Script varchar(max) = ''
declare @FKScript varchar(max) = ''
declare @ctrl varchar(2) = char(13)
declare @type1 varchar(100) = 'char, varchar'
declare @type2 varchar(100) = 'nchar, nvarchar '
declare @type3 varchar(100) = 'numeric,decimal'
set @Script = 'CREATE TABLE ' + @tableName + '(' + @ctrl
-- Columns
select @Script += ' '+ QUOTENAME( c.name ) + ' '+ QUOTENAME( TYPE_NAME( system_type_id ) )
+ case
when CHARINDEX( TYPE_NAME(system_type_id), @type1 , 0) > 0 then '('+ case when c.max_length = -1 then
'max' else CAST( c.max_length as varchar(20) ) end +')'
when CHARINDEX( TYPE_NAME(system_type_id), @type2 , 0) > 0 then '('+ case when c.max_length = -1 then
'max' else CAST( c.max_length/2 as varchar(20) ) end +')'
when CHARINDEX( TYPE_NAME(system_type_id), @type3 , 0) > 0 then '('+ CAST( c.precision as varchar(20) )
+ ',' + CAST( c.scale as varchar(20) )+')'
else '' end
+ ' '+ case when is_nullable = 1 then '' else 'NOT' end + ' NULL,' + @ctrl
from sys.tables t inner join sys.columns c
on t.object_id = c.object_id
where t.object_id = OBJECT_ID( @tableName )
-- 콤마 제거
set @Script = left( @Script , datalength( @Script )- datalength( @ctrl ) - datalength( ',') ) + @ctrl
-- Primary Key 생성
select @Script += ' CONSTRAINT ' + QUOTENAME( name ) + ' PRIMARY KEY CLUSTERED '+ @ctrl
from sys.key_constraints
where parent_object_id = object_id( @tableName ) and [TYPE] = 'PK'
select @Script += ' (' + @ctrl
select @Script += ' '+ QUOTENAME( c.name )+ ' ASC,' + @ctrl
from sys.index_columns i inner join sys.key_constraints k
on i.object_id = k.parent_object_id
inner join sys.columns c
on i.object_id = c.object_id and i.column_id = c.column_id
inner join sys.indexes ii
on i.object_id = ii.object_id and i.index_id = ii.index_id
where parent_object_id = object_id( @tableName ) and k.[TYPE] = 'PK'
-- 콤마 제거
set @Script = left( @Script , datalength( @Script )- datalength( @ctrl ) - datalength( ',') ) + @ctrl
select @Script += ' ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]' + @ctrl
select @Script += ') ON [PRIMARY]' + @ctrl
select @Script += 'GO' + @ctrl
-- Foreign Key 추가
select @FKScript += 'ALTER TABLE '+QUOTENAME( SCHEMA_NAME() )+'.'+ QUOTENAME( OBJECT_NAME( fkeyid )) + ' WITH CHECK ADD
CONSTRAINT '+ QUOTENAME( OBJECT_NAME( constid ) ) + ' FOREIGN KEY ('+ QUOTENAME( cf.name ) + ')'+ @ctrl
+ 'REFERENCES '+QUOTENAME( SCHEMA_NAME() )+'.'+ QUOTENAME( OBJECT_NAME( rkeyid )) + ' ('+ QUOTENAME(
cr.name )+')'+ @ctrl
+ 'GO' + @ctrl + @ctrl
+ case when parent_object_id is null then 'ALTER TABLE '+QUOTENAME( SCHEMA_NAME() )+'.'+ QUOTENAME(
OBJECT_NAME( fkeyid )) + ' CHECK CONSTRAINT '+ QUOTENAME( OBJECT_NAME( constid ) ) + 'GO' + @ctrl + @ctrl else '' end
from sys.sysforeignkeys f
left
outer join sys.columns cf
on f.fkeyid = cf.object_id and f.fkey = cf.column_id
left
outer join sys.columns cr
on f.rkeyid = cr.object_id and f.rkey = cr.column_id
left -- CHECK KEY < 참조키만 된 컬럼 >
outer join
(
select k.parent_object_id, i.column_id
from sys.index_columns i inner join sys.key_constraints k
on i.object_id = k.parent_object_id
and i.object_id = OBJECT_ID( @tableName )
) t
on f.fkeyid = t.parent_object_id and f.fkey = t.column_id
where fkeyid = OBJECT_ID( @tableName )
print @Script
print @FKScript
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
MS-SQL] 코드트리 + 상세내역에 코드별 합계쿼리. (0) | 2013.02.26 |
---|---|
MS-SQL] sp_helptxt 만들기... (0) | 2012.11.22 |
MS-SQL] SP_JS_시리즈... (0) | 2012.03.02 |
MS-SQL ] MSDN 일부 정리! (0) | 2012.03.02 |
MS-SQL ] 1:N 관계에서 n순번 따기... (0) | 2012.03.02 |
PRJMNG] 클래스 관계...
클래스 다이어그램 일부 정리..
- 레이아웃 그리드는 작업중이라서 ... 패스~
# 락패턴..
# 그리드
# 툴바
# 컨텐츠 & 윈도우 & 탭컨테이너
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 스크린샷! (0) | 2013.04.01 |
---|---|
PRJMNG] 조건패널, 마스터디테일, 스케쥴러. (0) | 2012.12.14 |
PRJMNG] 프로그램 프레임!! (0) | 2012.11.11 |
PRJMNG] 패턴? 패널? 이름이 뭔가?? 이건 (0) | 2012.10.24 |
툴바 ] 리본바 흉내내기... (0) | 2012.10.23 |
PRJMNG] 프로그램 프레임!!
대략적인 프레임 구성이 끝났다. 오래도 걸리네... 주말에만 작업을 하다보니... 겁나게 느리눼..
# 새로 만들어진 컨트롤
- 툴바컨테이너
- 락패턴
- 윈도우
- 컨텐츠
- 탭컨텐츠
- Source그리드를 이용한 JSFWGRID
1. Lock패턴을 이용해서 프로그램 시작
2. 인증이 완료되면 프로그램 메뉴가 로드됨.
프로젝트 메뉴를 클릭하거나 단축키( Alt +P )를 입력시 아래 프로그램 실행.
3. 프로젝트 프로그램이 떴을때 프로젝트를 다시 클릭하면 프로젝트 관련 메뉴가 모두 올라온다.
아래 왼쪽은 메뉴, 메뉴를 클릭한것이 우측에 화면이 뜸.
4. 아래는 프로젝트 등록 창을 별로 띠웠을때...
3-1. 아래는 동일한 창에 메뉴 구성을 탭으로 만들어 구축한것임.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 조건패널, 마스터디테일, 스케쥴러. (0) | 2012.12.14 |
---|---|
PRJMNG] 클래스 관계... (0) | 2012.11.11 |
PRJMNG] 패턴? 패널? 이름이 뭔가?? 이건 (0) | 2012.10.24 |
툴바 ] 리본바 흉내내기... (0) | 2012.10.23 |
PRJMNG] 구조 (0) | 2012.10.09 |
IQ테스트?
음 이렇게 나오넹...
전에 고딩때 돌고래수준이었는뎅...
문제 풀면서 뒤로가면서 아리 까리.. 한게 머리가 백지되는 느낌이 ... 있긴했는데
'--- 취미 > 생각하기' 카테고리의 다른 글
GUI Design Studio (0) | 2013.09.06 |
---|---|
휴식] 멘붕? ... (0) | 2013.06.10 |
흠.. 덥다... (0) | 2012.07.29 |
ERP 개발이 드디어 2월 29일 종료되었다. (0) | 2012.03.02 |
계약? ... 왠지 모르게 찜찜해... (0) | 2011.08.08 |
PRJMNG] 패턴? 패널? 이름이 뭔가?? 이건
# 패턴락? 이란걸로 불리는것 같음..
설정하게 되면 각 박스별로 랜덤한 숫자가 부여됨.
패턴을 그어 선택하고 설정을 하면!! 선택된 순서대로 저장됨.
이후 잠금상태(대기)에서 순서대로 패턴을 그어 ID의 일치여부를 확인함.
# 상태값 ( LOCK, UNLOCK, CONFIG )
각 상태값 별로 동작을 정의되었음.
훈스닷넷에 초기 컨셉 잡았던 소스를 올렸으나... 별반응은 없네..
선택만 넣어놔서 그런지...
>> 프로젝트 관리 프로그램의 시작 화면에 사용될 패턴임!!
> 설정!!
> 설정된 후 대기화면...
> 잘못 선택했을때 효과 ( 깜빡거리는데... 캡쳐가 안됨 )
> 잠금해제되었을때 ( 깜빡거리는데... 캡쳐안됨 )
------------------------------------------------ 이전...
스마트 폰을 보면 패턴??
마우스 이동을 이용해서 락을 풀어주는 역할을 하는 이놈...
한번 만들어 봐야지 했던거라서... 만들었다..
설정 시 다음 처럼 파란 원이 나타나며 설정을 하면 저장한다.
설정이 끝나면 다시 저장한 패턴에 맞춰 움직여주면 성공인지 실패인지 확인 가능.
=> 각 원별로 랜덤한 아이디가 설정시 부여되는데
이 값은 배치될때마다 원래 자리에 할당이 되고
이 값이 패턴에 대한 값이 일치하는지 확인하게 됨.
값이 다르면 패턴이 같아도 안풀림. ( 설정할때의 값으로 셋팅이 됨! )
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 클래스 관계... (0) | 2012.11.11 |
---|---|
PRJMNG] 프로그램 프레임!! (0) | 2012.11.11 |
툴바 ] 리본바 흉내내기... (0) | 2012.10.23 |
PRJMNG] 구조 (0) | 2012.10.09 |
PRJMNG] 구조 (0) | 2012.08.13 |
툴바 ] 리본바 흉내내기...
프로그램을 만들던 중 리본바를 쓸까하다가 라이센스가 어쩌고 저쩌고 말이 많아
내가 편하게 사용할 수 있는걸 만들었음.
툴바의 기능은 모두 윈도우의 내부 컨텐츠에서 등록하게 되어있고
Window.Regist( IContent ); 로 컨텐츠를 윈도우에 등록하게된다
이때 컨텐츠에 구현된 기능들이 Window.Toolbar에 등록된다.
Window는 하나의 컨텐츠가 아닌 다수의 컨텐츠를 보유가능하고
선택 또한 가능하며, 선택될때마다 툴바는 다시 셋팅된다.
-- 프로젝트 컨텐츠( 메뉴 컨텐츠와 동일한 윈도우 )
-- 메뉴컨텐츠 ( 프로젝트 컨텐츠와 동일한 윈도우 )
일반 버튼만 추가 된 툴바 ( 중앙에 프로젝트, 닫기 버튼 적용 )
버튼 그룹이 추가된 툴바 ( 중앙에 프로젝트, 닫기 버튼 적용 )
탭이 추가된 툴바 ( 중앙에 프로젝트, 닫기 버튼 적용 )
사용법 :
일반 툴바
//toolbar1.Regist(tl); //-- ok
버튼 그룹 툴바
//ToolGropBoxElement gb = new ToolGropBoxElement() { Text = "그룹1" }; //-- ok
//gb.Regist(tl);
//toolbar1.Regist(new ToolElementList() { { gb } });
탭 툴바
ToolTabControlElement tabctrl = new ToolTabControlElement();
ToolTabPageElement tabpage = new ToolTabPageElement() { Text = "탭1" };
tabpage.Regist(tl);
tabctrl.Regist(new ToolElementList() { tabpage });
toolbar1.Regist(new ToolElementList() { tabctrl });
모두 ToolbarElement( 추상객체 ) 객체를 구현하여 만들어진다,
툴바 내부 버튼도 동일하게 ToolBarElement( 추상객체 )를 구현한다.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] 프로그램 프레임!! (0) | 2012.11.11 |
---|---|
PRJMNG] 패턴? 패널? 이름이 뭔가?? 이건 (0) | 2012.10.24 |
PRJMNG] 구조 (0) | 2012.10.09 |
PRJMNG] 구조 (0) | 2012.08.13 |
PRJMNG] 프로젝트 등록화면 (0) | 2012.08.13 |